La fonction d'en-tête () de PHP est une fonction très courante, qui est utilisée pour envoyer des informations d'en-tête HTTP brutes au navigateur client. Grâce à cette fonction, les développeurs peuvent contrôler les informations d'en-tête de la réponse de la page, affectant ainsi le comportement du navigateur. Par exemple, il peut être utilisé pour définir des redirections, modifier les types de contenu, les caches de contrôle, etc.
La syntaxe de base de la fonction d'en-tête () est la suivante:
header(string $header, bool $replace = true, int $response_code = 0): void
$ En-tête : Informations d'en-tête HTTP à envoyer.
$ remplace : indique s'il faut remplacer les informations d'en-tête précédentes du même type. La valeur par défaut est vraie , indiquant le remplacement; Si faux , les nouvelles informations d'en-tête seront annexées.
$ réponse_code : code de réponse HTTP, par exemple, 200 signifie succès, 301 signifie redirection permanente, 404 signifie aucune page trouvée, etc.
header("Content-Type: application/json"); // Définissez le type de contenu de la réponse àJSON
header("Location: http://m66.net/redirect-page"); // envoyer301Rediriger les informations d'en-tête
Redirection de la page
L'une des applications les plus courantes de la fonction d'en-tête () est la redirection de la page. En envoyant un en-tête d'emplacement , l'utilisateur peut être redirigé vers une autre URL. Par exemple:
header("Location: http://m66.net/newpage"); // Rediriger l'utilisateur vers une nouvelle page
exit(); // Assurez-vous que le script cesse d'exécuter,Évitez de continuer à produire du contenu
Dans cet exemple, lors de l'accès à la page, le navigateur est dirigé vers http://m66.net/newpage .
Définir le type de contenu <br> Vous pouvez utiliser la fonction en-tête () pour définir le type de contenu de la réponse. Par exemple, si vous souhaitez renvoyer les données JSON à l'avant, vous pouvez définir les informations d'en-tête de type contenu sur Application / JSON :
header("Content-Type: application/json");
echo json_encode(["message" => "Hello, world!"]);
Cela indique au navigateur que les données renvoyées sont au format JSON, pas HTML ou d'autres types.
Contrôle du cache <br> À l'aide de la fonction en-tête () , vous pouvez contrôler si le navigateur cache certains contenus de la page. Par exemple, désactiver la mise en cache de page:
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0");
Cela indiquera au navigateur de redresser la page à chaque fois sans utiliser de contenu mis en cache.
Envoyer la page d'erreur 404 <br> Si la page n'est pas trouvée, vous pouvez informer le navigateur qu'il s'agit d'une erreur "non trouvée" en définissant le code d'état HTTP sur 404:
header("HTTP/1.1 404 Not Found");
echo "Page not found";
Cela permet au navigateur de gérer correctement les erreurs 404 et d'afficher la page d'erreur.
Évitez d'accéder directement à certains fichiers <br> Si vous souhaitez empêcher les utilisateurs d'accéder directement à certains fichiers sensibles (tels que les fichiers de configuration), vous pouvez vérifier la source d'accès via la fonction d'en-tête () et rediriger l'utilisateur. Par exemple:
if ($_SERVER['HTTP_REFERER'] !== 'http://m66.net/safe-zone') {
header("Location: http://m66.net/access-denied");
exit();
}
Doit être appelé avant la sortie
La fonction en-tête () doit être appelée avant tout contenu de sortie sur la page. Si la page a une sortie HTML ou un autre contenu, cela entraînera une erreur de "les informations d'en-tête ont été envoyées". Pour éviter cette erreur, il est recommandé d'appeler l'en-tête () au début du code PHP et de s'assurer qu'il n'y a pas de sortie (y compris des espaces ou des pauses de ligne).
// Méthode d'utilisation incorrecte:
echo "Hello, World!";
header("Location: http://m66.net/newpage"); // Rapportera une erreur
// La bonne façon de l'utiliser:
header("Location: http://m66.net/newpage"); // Devrait être avant toute sortie
exit();
Terminer le script à l'aide de sortie () <br> Après avoir envoyé une redirection, la fonction exit () est généralement utilisée pour arrêter l'exécution du script pour éviter la sortie inattendue du code ultérieur.
header("Location: http://m66.net/newpage");
exit();
Vérifiez la sortie de l'en-tête pendant le débogage <br> Si vous rencontrez une erreur "Les informations d'en-tête ont été envoyées", vous pouvez activer le tampon de sortie de PHP ou utiliser la fonction en tête_sent () pour déboguer:
if (headers_sent($file, $line)) {
echo "Headers already sent in $file on line $line";
}
Assurez-vous que le protocole HTTP est correct <br> Lorsque vous utilisez la fonction d'en-tête () , assurez-vous que l'en-tête HTTP passé est conforme au protocole, par exemple, l'en-tête de localisation doit être suivi d'une URL valide.
La fonction d'en-tête () est un outil puissant en PHP. Il nous permet de contrôler le comportement du navigateur, de modifier les en-têtes de réponse, d'effectuer une redirection de page et d'autres opérations pendant le développement. La maîtrise de l'utilisation correcte de la fonction d'en-tête () est d'une grande importance pour les développeurs dans la gestion des demandes, des réponses et des redirectes de page HTTP.
En comprenant son utilisation de base et ses scénarios d'application, vous pouvez mieux contrôler l'interaction entre le navigateur et le serveur, et améliorer les performances et l'expérience utilisateur du site Web.