Tout le monde utilisera inévitablement les fonctions header et setcookie lors de l'utilisation de PHP. Ces deux fonctions enverront une information d'en-tête de fichier au navigateur, mais s'il y a une sortie avant d'utiliser ces deux fonctions (y compris une sortie vide, telle que des espaces). , retours chariot et sauts de ligne) provoquera une erreur, les informations d'invite sont les suivantes : "L'en-tête était prêt à envoyer par" ! Existe-t-il donc un moyen d'envoyer les informations d'en-tête du fichier après la sortie ? Plusieurs fonctions de contrôle du tampon ont été ajoutées à PHP 4.0. L'utilisation de ces fonctions peut nous aider à résoudre de nombreux problèmes.
1. Introduction aux fonctions associées :
1. Flush : affichez le contenu dans le tampon et supprimez le tampon. Format de la fonction : flush() Description : Cette fonction est fréquemment utilisée et est très efficace.
2. ob_start : Ouvrir le tampon de sortie Format de la fonction : void ob_start(void) Description : Lorsque le tampon est activé, toutes les informations d'en-tête non-fichier du programme PHP ne seront pas envoyées, mais sera enregistré dans le tampon interne. Afin d'afficher le contenu du tampon, vous pouvez utiliser ob_end_flush() ou utiliser ob_end_clean() pour afficher le contenu du tampon.
3, ob_get_contents : renvoie le contenu du tampon interne. Utilisation : string ob_get_contents(void) Description : Cette fonction renverra le contenu du tampon actuel Si le tampon de sortie n'est pas activé, il renverra FALSE.
4. ob_get_length : renvoie la longueur du tampon interne. Utilisation : int ob_get_length(void) Description : Cette fonction renverra la longueur dans le tampon actuel comme ob_get_contents, si le tampon de sortie n'est pas activé. Renvoie FAUX.
5. ob_end_flush : Envoie le contenu du tampon interne au navigateur et ferme le tampon de sortie. Utilisation : void ob_end_flush(void) Description : Cette fonction envoie le contenu du tampon de sortie (le cas échéant).
6. ob_end_clean : Supprimez le contenu du tampon interne et fermez le tampon interne. Utilisation : void ob_end_clean(void) Remarque : Cette fonction n'affichera pas le contenu du tampon interne !
7. ob_implicit_flush : Activer ou désactiver l'actualisation absolue Utilisation : void ob_implicit_flush ([int flag]) Description : Toute personne ayant utilisé Perl connaît la signification de $|=x Cette chaîne peut ouvrir/fermer le tampon, et The. La fonction ob_implicit_flush est la même que celle-là. La valeur par défaut est de fermer le tampon et d'ouvrir la sortie absolue.
2. Exemples d'utilisation :
Au début, l'auteur a dit que l'utilisation de fonctions de contrôle du tampon peut empêcher les erreurs d'envoi d'informations dans l'en-tête du fichier :
------------------------------------------------------------- <? //PHP提示符 ob_start(); //打开缓冲区 echo "Hello/n"; //输出 header('location:gotourl.php'); //把浏览器重定向到gotourl.php ?> -------------------------------------------------------------
Si vous supprimez ob_start, PHP affichera une erreur sur la ligne 4 du fichier (le message d'erreur est comme indiqué ci-dessus), mais avec ob_start, il n'y aura pas d'erreur. La raison est que lorsque le tampon est ouvert, les caractères après echo ne le sont pas. Il sera affiché sur le navigateur, mais sera conservé sur le serveur. Il ne sera affiché que lorsque vous utiliserez flush ou ob_end_flush, il n'y aura donc aucune erreur de sortie d'en-tête de fichier !
Ci-dessous est donné un objectif très classique :
Par exemple, vous utilisez & lt;? Phpinfo ();? & Gt; . Si vous voulez Que dois-je faire si je veux enregistrer la sortie de la fonction phpinfo() ? Avant qu'il n'y ait pas de contrôle de tampon, on peut dire qu'il n'y avait aucune solution du tout, mais avec le contrôle de tampon, nous pouvons facilement le résoudre :
------------------------------------------------------------- <? ob_start(); //打开缓冲区 phpinfo(); //使用phpinfo函数 $info=ob_get_contents(); //得到缓冲区的内容并且赋值给$info $file=fopen('info.txt','w'); //打开文件info.txt fwrite($file,$info); //写入信息到info.txt fclose($file); //关闭文件info.txt ?> -------------------------------------------------------------
Utilisez le méthode ci-dessus, vous pouvez enregistrer les informations phpinfo de différents utilisateurs, ce qui, j'en ai bien peur, n'avait aucun moyen de le faire auparavant ! En fait, ce qui précède est une méthode pour convertir certains « processus » en « fonctions » !