Il est souvent très utile de rediriger le visiteur vers une autre page. Par exemple à la suite du traitement d'un formulaire, pour rediriger vers une autre page avec un message de confirmation et ainsi éviter d'ajouter plusieurs fois les données si le visiteur recharge la page.

Il existe plusieurs méthodes pour rediriger le visiteur : avec du php, du javascript ou bien un simple méta tag html. Chaque solution a ses avantages et ses inconvénients. Nous allons les étudier dans ce tutorial.

1- La fonction php header()

La fonction header() permet de faire plusieurs choses et, en particulier, de rediriger vers une autre page.

Quelques exemples :

  1. <?php
  2.  
  3. header("Location: http://www.site.com");
  4. header("Location: ../page.htm");
  5. header("Location: /pages/page.htm");
  6.  
  7. ?>

Cette fonction doit par contre être utilisée avant d'envoyer des données html, sous peine de produire une erreur.

Attention ! Les espaces et sauts de ligne sont suffisants pour être interprétés comme des données, le script suivant générera donc une erreur.

  1. <- ici
  2. <?php
  3.  
  4. header("Location: http://www.phpfrance.com");
  5.  
  6. ?>

Vous pouvez aussi consulter le manuel pour en connaître les autres possibilités de la fonction header().

2- Redirection en javascript

Si vous êtes tête en l'air ou si voulez écrire du texte avant la redirection (euh.. pourquoi faire?), vous pouvez utiliser du javascript à la place de la fonction php header().

  1. <script type="text/javascript">
  2. document.location.replace("http://www.phpfrance.com");
  3. </script>

Pour fonctionner, il faut néanmoins que le visiteur ait activé le support du javascript... ce qui n'est malheureusement pas toujours le cas :-(

3- Avec les métas tags

Troisième possibilité : utiliser le méta tag refresh.

  1. <meta http-equiv="refresh" content="5; url=http://www.phpfrance.com">
  2. </head>
  3. Notre site a déménagé, veuillez mettre à jour vos favoris.
  4. </body>
  5. </html>

Il y a deux inconvénients ...

  • Cette balise se place dans la partie <head> de votre page
  • La redirection n'est pas immédiate.

... qui s'avèrent être, par contre, un avantage si vous souhaitez marquer la redirection, en affichant par exemple un texte pendant 5 secondes, avant de rediriger vers votre nouveau site.

Pour en savoir plus sur les Méta Tags, cliquez ici.

4- Conclusion

La meilleure solution, à mon avis, est de faire preuve d'un peu de rigueur et d'utiliser la fonction PHP header(). Dans certaines situations, il peut être utile d'avoir recours au javascript mais utilisez-le le moins possible. Les métas tags n'apportent, quant à eux, que peu d'intérêt, étant donné le petit délai d'attente avant la redirection sauf si vous voulez la mettre en évidence.