lundi 1 avril 2013

Redirection PHP

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();
?>

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
 

Aucun commentaire:

Enregistrer un commentaire