La redirection de la page est une opération courante lors du développement d'applications PHP. Habituellement, les développeurs utilisent la fonction d'en-tête () pour implémenter la redirection de page. Cependant, avant de rediriger, si la page sortira quelque chose (tel que les balises HTML ou les messages d'erreur), cela entraînera l'échec de la redirection ou un comportement inattendu. Afin de s'assurer que la redirection de la page est fluide et d'éviter les interférences de sortie inutiles, l'utilisation de la fonction OB_CLEAN () est particulièrement importante.
Dans PHP, ob_clean () fait partie du tampon de sortie (tampon de sortie). Par défaut, PHP enregistre la sortie de la page dans un tampon au lieu de l'envoyer directement au navigateur. Ce mécanisme tampon permet aux développeurs de modifier ou de nettoyer la sortie avant d'envoyer le contenu réel. Le but d' OB_CLEAN () est de nettoyer le contenu dans le tampon de sortie, mais ne ferme pas le tampon de sortie. Autrement dit, le tampon existe toujours, permettant à un contenu ultérieur de continuer à être capturé.
Lorsque PHP effectue une mise en mémoire tampon de sortie, tout le contenu (y compris les balises HTML, les messages d'erreur, les espaces, etc.) sera stocké dans le tampon. Si vous effectuez une redirection d'en-tête () , le contenu existe déjà dans le tampon, PHP lancera un avertissement car rien ne peut être sorti lors de l'envoi d'informations d'en-tête HTTP. Pour éviter cela, appeler ob_clean () pour effacer le tampon est un choix judicieux.
En nettoyant le tampon, vous vous assurez qu'il n'y a pas d'interférence de sortie inattendue lors de l'appel de la redirection d'en-tête () et de vous assurer que l'en-tête HTTP peut être envoyé correctement.
L'utilisation ob_clean () est très simple. Habituellement, les développeurs appellent cette fonction pour s'assurer que le tampon est effacé avant que la page ne soit redirigée. Par exemple:
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Activer la mise en mémoire tampon de sortie</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_start</span></span><span>();
</span><span><span class="hljs-comment">// Votre code de sortie(Par exemple HTML)</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>Voici quelques contenus de sortie。</p>"</span></span><span>;
</span><span><span class="hljs-comment">// Effacer le tampon</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ob_clean</span></span><span>();
</span><span><span class="hljs-comment">// Effectuer la redirection de la page</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">"Location: http://example.com"</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
Allumez la mise en mémoire tampon de sortie : ob_start () Activer la mise en mémoire tampon de sortie. Toute sortie ultérieure (y compris l'écho et l'impression ) ne sera pas envoyée immédiatement au navigateur, mais sera stockée dans le tampon.
Sortie du contenu : dans l'exemple, nous utilisons Echo pour produire un contenu HTML.
Effacez le tampon : Après avoir appelé ob_clean () , le contenu dans le tampon est effacé, mais le mécanisme tampon est toujours activé, afin qu'il ne affecte pas les opérations ultérieures.
Redirection de la page : Enfin, utilisez En-tête () pour effectuer l'opération de redirection de la page, et l'utilisateur sera dirigé vers la nouvelle page.
Dans le développement réel, ob_clean () est généralement utilisé pour s'assurer qu'il n'y a pas de sortie inutile interférant avec l'envoi d'en-têtes HTTP avant la redirection, en particulier dans certains programmes complexes où la production de pages peut impliquer plusieurs pièces, telles que:
Rendu de modèle
Données générées dynamiquement
Le résultat de l'API externe
Sans un contrôle de sortie approprié, les développeurs peuvent rencontrer des résultats imprévisibles. Par conséquent, l'appel ob_clean () peut assurer une redirection normale et un comportement stable de la page avant d'exécuter des opérations telles que Header () et Setcookie () .
En bref, lors de la redirection des pages, appeler ob_clean () est une bonne habitude de programmation. Il peut vous aider à effacer le contenu redondant dans le tampon et à éviter d'affecter l'envoi d'en-têtes HTTP. De cette façon, vous pouvez vous assurer que le comportement de redirection de l'application n'est pas interféré par la sortie inutile, en maintenant la stabilité et la fiabilité de la page. Par conséquent, il est très important d'utiliser les fonctions de nettoyage du tampon de sortie (telles que ob_clean () ) dans n'importe quel endroit où des opérations d'en-tête HTTP sont nécessaires (telles que la redirection, le réglage des cookies, etc.).