<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Cette partie du code n'a rien à voir avec le contenu de l'article,Démontrer le bloc pré-code</span></span><span>
</span><span><span class="hljs-title function_ invoke__">date_default_timezone_set</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span><span><span class="hljs-variable">$now</span></span><span> = </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Heure actuelle:<span class="hljs-subst">$now</span></span></span><span>\n";
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
existerPHPPendant le développement,fonctionnerHTTPLes en-têtes de réponse sont des exigences très courantes。`</span><span><span class="hljs-title function_ invoke__">header</span></span><span>()`Les fonctions nous permettent d'envoyer l'originalHTTPInformations sur l'en-tête,et`</span><span><span class="hljs-title function_ invoke__">headers_sent</span></span><span>()`函数则可以检测Informations sur l'en-tête是否已经发送。Combiner ces deux fonctions raisonnablement,能够有效避免因重复发送Informations sur l'en-tête导致的错误,从et提升程序的健壮性和用户体验。
</span><span><span class="hljs-comment">## 1. `header()`Fonction Introduction</span></span><span>
`</span><span><span class="hljs-title function_ invoke__">header</span></span><span>()`Utilisé pour envoyer l'originalHTTPtête。Par exemple,Saut、Spécifiez le type de contenu、Contrôle du cache, etc.:
```php
</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-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Content-Type: application/json'</span></span><span>);
</span></span>
Cependant, si l'en-tête HTTP a été envoyé (par exemple, certains caractères HTML ou Whitespace ont été sortis), l'appel en-tête () déclenchera une erreur de "Impossible de modifier les informations d'en-tête - les en-têtes déjà envoyés".
headers_sent () est utilisé pour détecter si l'en-tête HTTP a été envoyé au client. Son utilisation typique:
<span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">headers_sent</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-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Headers already sent, cannot redirect.'</span></span><span>;
}
</span></span>
Cela peut éviter d'appeler en-tête () après que les informations d'en-tête ont été envoyées pour provoquer des exceptions du programme.
Appelez en-tête () à l'avance pour éviter de produire quoi que ce soit
Une fois que PHP a sorti du contenu, l'en-tête HTTP sera automatiquement envoyé. Par conséquent, assurez-vous que l'en-tête () n'a pas de sortie d'écho, d'impression ou de HTML avant son appelée.
Utilisez des en-têtes_sent () pour la détection afin d'éviter l'envoi répété des informations d'en-tête <br> Dans des programmes complexes ou des systèmes de modèles, il peut être difficile de contrôler complètement l'ordre de sortie, et il est particulièrement important d'utiliser en-têtes_sent () pour vérifier.
Prenez une alternative lorsque vous constatez que l'en-tête a été envoyé <br> Par exemple, utilisez JavaScript pour sauter ou fournir des liens manuels pour éviter les accidents du programme.
Utiliser avec la sortie ou la die <br> Après avoir envoyé une redirection, le script doit être sorti immédiatement pour empêcher l'exécution de code ultérieure.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// Supposons que quelque chose aurait pu être sorti quelque part</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Bienvenue à visiter!"</span></span><span>;
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">headers_sent</span></span><span>(</span><span><span class="hljs-variable">$file</span></span><span>, </span><span><span class="hljs-variable">$line</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-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<script>window.location.href='http://example.com';</script>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>Le saut de page a échoué,Veuillez cliquer <a href='http://example.com'>ici</a>。</p>"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Headers already sent in <span class="hljs-subst">$file</span></span></span><span> on line </span><span><span class="hljs-subst">$line</span></span><span>.");
}
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
La combinaison d' en-tête () et d'en-tête_sent () peut améliorer considérablement la sécurité et la flexibilité des opérations d'en-tête HTTP. En particulier dans les grands projets ou cadres, ce mécanisme de détection peut éviter les erreurs mortelles causées par des erreurs dans l'ordre de sortie, ce qui rend le code plus robuste et plus facile à entretenir. Le développement de bonnes habitudes de contrôle de la sortie et la sensibilisation à l'utilisation de la détection de la tête est une meilleure pratique importante dans le développement de PHP.
<span></span>