J'utilise le même script PHP pour Y compris B> et pour AJAX B> Chargement. Il s'agit de certains éléments de catalogue aléatoire qui sont chargés avec la page et peuvent être chargés avec Ajax. J'ai besoin d'utiliser Lorsque j'utilise la fonction d'en-tête et que la sortie a déjà commencé, je reçois un avertissement PHP à ce sujet. Comment PHP sait-il que la sortie a déjà commencé? Quelle est la meilleure façon de déterminer cela et de ne pas appeler la fonction d'en-tête? P>
merci. p> en-tête () code> fonctionner uniquement s'il est chargé via AJAX. P>
6 Réponses :
http://php.net/manual/fr/function.Headers- SENT.PHP
// If no headers are sent, send one if (!headers_sent()) { header('...'); exit; }
Merci beaucoup! Juste ce dont j'avais besoin. Et au fait pourquoi sortir?
L'utilisation de la sortie est directement du manuel PHP référencé pour un appel «en-tête: emplacement» qui l'exige. Dans votre cas, vous ne devriez pas l'ajouter, ou vous allez casser la sortie.
Ouais désolé, je l'ai copié directement du manuel et j'ai oublié de le supprimer :)
Une option est d'appeler ob_start () code> au début, qui Tampons toute votre sortie . De cette façon, vous pouvez envoyer des en-têtes à tout moment. P>
Il y a un intégré facile pour cela: pas beaucoup plus à ajouter :) p> p> p>
Headers_sent () Code>
renvoie true code> si vous ne pouvez pas envoyer d'en-têtes supplémentaires. P>
Si vous envoyez quelque chose au client, la sortie a commencé. P>
Par exemple, même une seule étiquette HTML, elle est déjà sortie. P>
Vous pouvez structurer votre application afin que cela ne se produise pas, Ou vous pouvez activer la mémoire tampon de sortie: p>
Retirez simplement la ligne vide avant que le code ne commence et ajoutez de la sortie; Après la fin de votre sortie. p>
Il n'y a pas de code dans la question - comment savez-vous ce qui est là et que n'est pas? La plupart des réponses actuelles suggèrent d'utiliser headers_sent () code> - y a-t-il une raison pour laquelle votre suggestion pourrait être meilleure?