Redirection PHP
accueil >
Cours >
PHP >
Redirection PHP
Cours / tutoriel écrit le 17-06-2010 par sky
Pour des raisons diverses, on peut parfois avoir besoin de faire une redirection. Nous pouvons très bien faire la redirection en JavaScript mais cela ne fonctionnera pas forcément dans tous les cas, par exemple si le navigateur à JavaScript désactivé. (c'est un cas rare certes...)
En PHP, la redirection se fera dans tous les cas étant donné que le code est exécuté par le serveur. Voyez comme il est très simple de faire une redirection en PHP :
Redirection serveur sans changer les entête du navigateur :
<?PHP
header ("location : fichier.php");
// On peut aussi mettre http://www.site.com à la place de fichier.php
?>
Attention
Une redirection en PHP doit être placé avant tout "output" (sorti de donnée) vers le navigateur. Pour faire simple : il ne doit y avoir AUCUN html avant la redirection. (pas de echo, print etc ...)
Redirection serveur
La redirection est définie par une fonction chargée de renvoyer un entête HTTP. Il faut bien sûr bien choisir le code de retour HTTP.
Pour exemple aussi, voici une redirection qui ne nuira pas au référencement sur un annuaire par exemple :
<?php
header("Status : 301 Moved Permanently");
header("Location: http://www.votresite.com/unepage.htm");
exit();
?>
Le code erreur 301 indique que le document se trouve définitivement à cet endroit. Du coup Google ne prendra pas en compte la page de redirection mais uniquement la page destinataire.
Exemple : utilisation de la fonction header() en PHP en faisant une redirection 302 (document déplacé de façon temporaire) :
<?php
header("Status : 302 Moved Temporary");
header("Location: http://www.votresite.com/unepage.htm");
exit();
?>
Pour une redirection après n secondes, il faut passer par du HTML ou du Javascript :
-
redirecton HTML
-
redirection Javascript
Voici la liste des Code HTTP :
* 100 : OK pour continuer
* 101 : le serveur a changé de protocoles
* 200 : requête effectuée avec succès
* 201 : document créé (raison : nouvelle URI)
* 202 : requête achevée de manière asynchrone (TBS)
* 203 : requête achevée de manière incomplète
* 204 : aucune information à renvoyer
* 205 : requête terminée mais formulaire vide
* 206 : requête GET incomplète
* 300 : le serveur ne peut pas déterminer le code de retour
* 301 : document déplacé de façon permanente
* 302 : document déplacé de façon temporaire
* 303 : redirection avec nouvelle méthode d'accès
* 304 : le champ 'if-modified-since' n'était pas modifié
* 305 : redirection vers un proxy spécifié par l'entête
* 307 : HTTP/1.1
* 400 : erreur de syntaxe dans l'adresse du document
* 401 : pas d'autorisation d'accès au document
* 402 : accès au document soumis au paiement
* 403 : pas d'autorisation d'accès au serveur
* 404 : la page demandée n'existe pas
* 405 : méthode de requête du formulaire non autorisée
* 406 : requête non acceptée par le serveur
* 407 : autorisation du proxy nécessaire
* 408 : temps d'accès à la page demandée expiré
* 409 : l'utilisateur doit soumettre à nouveau avec plus d'infos
* 410 : cette ressource n'est plus disponible
* 411 : le server a refusé la requête car elle n'a pas de longueur
* 412 : la précondition donnée dans la requête a échoué
* 413 : l'entité de la requête était trop grande
* 414 : l'URI de la requête était trop longue
* 415 : type de média non géré
* 500 : erreur interne du serveur
* 501 : requête faite au serveur non supprimée
* 502 : mauvaise passerelle d'accès
* 503 : service non disponible
* 504 : temps d'accès à la passerelle expiré
* 505 : version HTTP non gérée
Commentaires
gautier ngoma le 21-01-2013
slt j ai un probleme avecmon formulaire que j ai cree sur le site web ,www.achilletransfert.com, mais cela ne passe pas,cela envois sur une passe qui dit qu il ya erreur 405,j aimerai recevoir le mail sur mon adresse mail [email protected]
sky le 24-06-2010
Salut. Essaye une redirection HTML (http://www.viaphp.net/cours/html/83-redirection-html) ou Javascript (http://www.viaphp.net/cours/javascript/84-redirection-javascript)
guiguise le 23-06-2010
Et si on veux être rediriger au bout de 5 secondes par exemple ?