Dans le développement Web, la redirection de la page Web est une opération courante, comme la redirection vers une page centrale personnelle après la connexion ou la migration d'une ancienne page vers une nouvelle adresse. PHP fournit un moyen simple et direct d'implémenter cette fonction, à savoir, en utilisant la fonction en-tête () pour envoyer des informations d'en-tête HTTP, informent ainsi le navigateur pour passer à une nouvelle page.
La fonction d'en-tête () de PHP peut être utilisée pour envoyer des informations de l'en-tête de message HTTP brutes, et sa syntaxe est la suivante:
<span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$header</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$replace</span></span><span> = </span><span><span class="hljs-literal">true</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$response_code</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>);
</span></span>
Lorsqu'ils sont utilisés pour la redirection, les formes courantes sont les suivantes:
<span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: https://www.example.com'</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>;
</span></span>
Ici, l'emplacement est un en-tête HTTP spécial qui demande au navigateur de passer à une autre URL. La sortie est appelée pour s'assurer que PHP ne continue pas à exécuter le code ultérieur et à empêcher les erreurs de sortie ou logiques inattendues.
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$login_success</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: /dashboard.php'</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">"Nom d'utilisateur ou mot de passe incorrect。"</span></span><span>;
}
</span></span>
<span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$_SERVER</span></span><span>[</span><span><span class="hljs-string">'REQUEST_METHOD'</span></span><span>] === </span><span><span class="hljs-string">'POST'</span></span><span>) {
</span><span><span class="hljs-comment">// Formulaires de traitement</span></span><span>
</span><span><span class="hljs-comment">// ...</span></span><span>
</span><span><span class="hljs-comment">// Rediriger vers la page de remerciement</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: /thank-you.php'</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>;
}
</span></span>
Après avoir soumis le formulaire, utilisez l'en-tête () pour sauter, ce qui peut effectivement empêcher la soumission répétée des données lors de la rafraîchissement de la page:
<span><span><span class="hljs-comment">// Enregistrer les données et sauter</span></span><span>
</span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: /success.php'</span></span><span>);
</span><span><span class="hljs-keyword">exit</span></span><span>;
</span></span>
L'en-tête doit être appelé avant toute sortie <br> Une fois que la page a la sortie (telle que Echo, des balises ou des espaces HTML), l'utilisation d'en-tête () rapportera une erreur: "Impossible de modifier les informations d'en-tête". Ce problème peut être évité en activant le tampon de sortie par ob_start () .
Il est plus sûr d'utiliser des chemins absolus <br> Bien que des chemins relatifs puissent être utilisés, comme l'emplacement: Dashboard.php , il est recommandé d'utiliser des chemins absolus ou des URL complètes pour éviter les erreurs de chemin.
Utiliser conjointement avec le code d'état HTTP <br> Le code d'état HTTP peut être défini via le troisième paramètre de l'en-tête () , par exemple:
<span><span><span class="hljs-title function_ invoke__">header</span></span><span>(</span><span><span class="hljs-string">'Location: /new-page.php'</span></span><span>, </span><span><span class="hljs-literal">true</span></span><span>, </span><span><span class="hljs-number">301</span></span><span>); </span><span><span class="hljs-comment">// Redirection permanente</span></span><span>
</span></span>
Le code d'état signifie ce qui suit:
301: Redirection permanente
302: Redirection temporaire (par défaut)
303: recommandé pour le saut après la soumission du formulaire
L'utilisation d'en-tête ('emplacement: ...') est le moyen le plus direct et le plus efficace d'atteindre la redirection de la page Web en PHP. La maîtrise peut vous permettre de gérer facilement la navigation de page, le transfert d'état et l'optimisation de l'expérience utilisateur. Dans les projets réels, une stratégie de redirection qui est plus conforme aux normes Web peut être mise en œuvre conjointement avec des codes de logique métier et HTTP appropriés.