Collectif H2Fr

Communauté Web & Forum de Sécurité Informatique


[PHP] Comment effectuer une redirection en PHP

Partagez
avatar
Valter
Admin

Messages : 65
Date d'inscription : 18/08/2015
Age : 24

[PHP] Comment effectuer une redirection en PHP

Message par Valter le Sam 22 Aoû - 1:17

Il existe principalement trois manières d'effectuer une redirection en PHP, c'est-à-dire communiquer au navigateur client que la page recherchée se trouve à une autre destination.

J'exclue évidemment l'url_rewriting et tout ce qui touche au fichier .htaccess dans la mesure ou ce tutoriel se focalise exclusivement sur le langage PHP.

Voici les trois manières d'effectuer une redirection avec PHP :


  1. En modifiant les entêtes de la réponse HTTP
  2. En affichant une balise meta de redirection HTML (méthode déconseillée)
  3. En affichant un un code de redirection en Javascript (méthode déconseillée)


Les balises de redirection HTML sont très proches d'être obsolètes et le Javascript n'est pas supporté par tous les navigateurs.

En outre, les deux dernières méthodes présentent l'inconvénient de devoir faire lire le contenu de la page au navigateur client alors que la première méthode ne modifie que les entêtes de la réponse HTTP.

Pour utiliser cette méthode, celle des entêtes HTTP donc, il vous faut connaître une fonction PHP : la fonction header().

Cette fonction permet d'ajouter ou de modifier un élément d'entête de la réponse HTTP que va fournir le serveur au client, suite à une requête HTTP (en termes lambda quand le visiteur va afficher la page).

Cette fonction ne sert pas qu'à faire des redirections, loin de là.

Voici à titre d'exemple le code servant à générer une erreur 404, en utilisant la même fonction header().

header('HTTP/1.1 404 Not Found');

L'avantage est que le traitement des entêtes HTTP se fait avant tout traitement du contenu de la réponse HTTP, en clair ça se fait avant que le navigateur client n'interprète la page pour l'afficher.

La corollaire est que la fonction header() doit être appelée avant que du contenu ne soit envoyé, que ce soit par lignes de code HTML ou par affichage PHP dans le fichier.

Ce code produira une erreur :

echo 'Ça marche ? Bah nan bâtard.';
header('HTTP/1.1 404 Not Found');

Un des désavantages des langages interprétés comme PHP.

Pour effectuer une redirection on utilisera l'entête Location, qu'on emploiera comme ceci :

header('Location: http://www.h2fr.net');

Le visiteur sera instantanément redirigé vers le site H2Fr sans même que le navigateur n'ait besoin d'afficher la page à laquelle il voulait initialement accéder.

Ce qui marche aussi pour les adresses relatives.

header('Location: dossier/fichier.php');

En outre, vous pouvez modifier plus d'une entête avec cette fonction PHP avant de rediriger le visiteur vers une autre page.

header('HTTP/1.1 403 Forbidden');
header('Location: http://www.h2fr.net');

Voilà pour ce tutoriel sur les redirections avec PHP.

    La date/heure actuelle est Jeu 14 Déc - 9:03