Comment rediriger ?
Par Charlie, mercredi 27 septembre 2006 à 11:28 :: PHP :: #45 :: rss
Balise méta
La redirection au moyen d'une balise méta se fait de la façon suivante :
<meta http-equiv="refresh" content="0;url=page.html" />
Le "0" indiquant un temps en seconde avant de rafraichir la page au moyen de l'URL fourni.
Hormis le fait que c'est une façon détournée de rediriger au moyen d'un système destiné au rafraichissement d'une page après un temps donné, ce fonctionnement présente un gros inconvénient.
Imaginez un formulaire sur le script A, envoyant les données sur un script de traitement B, lui-même redirigeant vers un dernier script C.

Si maintenant, l'utilisateur emploie le bouton de retour en arrière de son navigateur, il retombera sur le script B. Cela aura pour conséquence de renvoyer les données de formulaire pour ensuite être redirigé vers le script C. Il faudra donc que l'utilisateur clic rapidement deux fois sur le bouton arrière ou sélectionne directement le script A dans l'historique. En encore, je ne vous parle pas de l'énigmatique "données de session expirées" que l'on retrouve le plus souvent dans ce genre de situation.
Redirection en JavaScript
La redirection en JavaScript est réalisée de la manière suivante :
<script type="text/javascript">location.href = 'page.html';</script>
Le problème avec la redirection en JavaScript est exactement le même que pour la redirection par balise méta et s'ajoute à cela, l'obligation pour l'internaute d'activer le JavaScript (certes rarement désactivé).
Redirection HTTP
La redirection HTTP consiste à utiliser la fonction PHP "header( )" qui permet de rajouter ou de remplacer des informations présentes dans l'entête de réponse du protocole HTTP. On procède donc comme ceci :
header('location: http://www.lesite.com/page.html' );
exit;
Comme vous pouvez le remarquer, on ajoute la fonction "exit" pour arrêter le script à ce niveau car il est inutile de poursuivre le traitement après ça.
L'avantage de cette technique, c'est que le navigateur ne conserve pas le script intermédiaire (script B) dans son historique et lorsque l'utilisateur clic sur le bouton de retour arrière, il revient directement sur le formulaire (script A). Le fonctionnement est propre, et surtout, il a été conçu pour ça !

Seulement, cette méthode présente un gros problème pour les débutants, c'est qu'elle doit être utilisé avant d'envoyer du texte (echo, print, texte hors balise "<?php ?>", etc. ) et il est très difficile pour eux de comprendre la logique d'un tel fonctionnement et comment le résoudre. C'est d'ailleurs pour cette raison qu'ils s'orientent sur l'horrible solution du JavaScript.
Mais je le dis haut et fort ici même, n'utilisez jamais le JavaScript pour rediriger vos pages et forcez vous à structurer vos applications pour ne pas rencontrer de problème avec la redirection HTTP. Cela renforcera fortement la navigabilité de votre site et surtout, vous aidera à améliorer la conception générale de vos développements Web.

Commentaires
1. Le mercredi 27 septembre 2006 à 20:26, par Cédric
2. Le mercredi 4 octobre 2006 à 12:00, par laurent
3. Le mercredi 4 octobre 2006 à 12:22, par Charlie
4. Le vendredi 6 octobre 2006 à 01:34, par toto
5. Le jeudi 12 octobre 2006 à 15:32, par titi
6. Le jeudi 12 octobre 2006 à 15:37, par Charlie
7. Le vendredi 13 octobre 2006 à 07:31, par Vanzetti
8. Le vendredi 20 octobre 2006 à 13:20, par Soho
9. Le vendredi 3 novembre 2006 à 12:21, par bmag
10. Le vendredi 3 novembre 2006 à 13:42, par Charlie
11. Le vendredi 3 novembre 2006 à 14:00, par bmag
12. Le vendredi 3 novembre 2006 à 14:29, par Charlie
13. Le vendredi 3 novembre 2006 à 15:02, par bmag
14. Le vendredi 3 novembre 2006 à 15:27, par Charlie
15. Le vendredi 3 novembre 2006 à 15:42, par bmag
16. Le vendredi 3 novembre 2006 à 18:23, par bmag
17. Le lundi 13 novembre 2006 à 11:09, par visiteur
18. Le dimanche 3 décembre 2006 à 23:06, par chapon
19. Le samedi 9 décembre 2006 à 00:37, par Seb
20. Le mardi 12 décembre 2006 à 21:30, par Rooxy
21. Le jeudi 14 décembre 2006 à 17:12, par karek
22. Le jeudi 14 décembre 2006 à 18:02, par Charlie
23. Le mardi 19 décembre 2006 à 11:34, par Vonscott
24. Le mercredi 20 décembre 2006 à 03:47, par David
25. Le jeudi 11 janvier 2007 à 12:26, par yassine5
26. Le jeudi 1 février 2007 à 12:20, par Vanessa
27. Le lundi 5 février 2007 à 10:23, par marabbeh
28. Le mardi 13 mars 2007 à 09:35, par VooDoo
29. Le mardi 13 mars 2007 à 17:33, par le renard
30. Le lundi 19 mars 2007 à 13:25, par zadrel
31. Le jeudi 22 mars 2007 à 16:09, par Darkwolf
32. Le dimanche 25 mars 2007 à 01:42, par Fredouille
33. Le dimanche 25 mars 2007 à 01:43, par Fredouille
34. Le lundi 16 avril 2007 à 21:06, par isi
35. Le vendredi 11 mai 2007 à 11:27, par bricoleur du dimanche
36. Le lundi 11 juin 2007 à 14:55, par chels75
Ajouter un commentaire
Les commentaires pour ce billet sont fermés.