FONCTION DE REDIRECTION

bono62 - 19 déc. 2012 à 00:41
abdelaziz_info Messages postés 120 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 12 janvier 2017 - 14 févr. 2013 à 19:13
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/54823-fonction-de-redirection

abdelaziz_info Messages postés 120 Date d'inscription lundi 19 juillet 2004 Statut Membre Dernière intervention 12 janvier 2017
14 févr. 2013 à 19:13
Bonjour,
jojo19 :

1- l’idiotie est de ne pas poser de question si on ne sait pas...

2- La réponse à ta question est: si le (JavaScript) est absent ou désactivé tu ne peux jamais aller à ('http://www.monsite.com')

3- Un commentaire dans Une balise de (JavaScript) doit finir comme suivant: //-->

4- il manque ('), Pour que ton code fonctionne il doit être rédigé comme suivant :
<script type="text/javascript" language="JavaScript">
<!--
setTimeout("window.location='http://www.mahdi.elalia.net'",50);
//-->
</script>

Bon courage.
cs_jojo19 Messages postés 8 Date d'inscription vendredi 17 septembre 2004 Statut Membre Dernière intervention 27 décembre 2012
27 déc. 2012 à 17:56
Question (peut-être idiote, mais je la pose tout de même) :
pourquoi ne pas utiliser une fonction toute simple en JS ? ? ?
telle que :
<script type="text/javascript" language="JavaScript">
<!--
setTimeout("window.location='http://www.monsite.com",50);
-->
</script>

Quelle est le plus du php ? ? ?
cs_hornetbzz Messages postés 59 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 3 janvier 2011
24 déc. 2012 à 13:05
L'idéal serait d'essayer des redirections contrôlées, en commençant par un renvoi (à vérifier qu'ils n'aient pas déjà été envoyés) des headers puis javascript puis html. Il y a un post dans la doc php à ce sujet : http://php.net/manual/en/function.header.php#83448
JejeScript :
D'accord pour le && ^^

Apparemment tu n'as pas compris son utilité :p

Si $adresse n'est pas renseigné :
Actualisation de la page courante.

Sinon :
SI $temps est égal à null (valeur par défaut)
On redirige directement sur l'adresse
SINON (!empty($adresse) && $temps !== NULL)
On ecrit la redirection pour $temps secondes.
Fin sinon
Fin Sinon


^^
Mais pour revenir a ton code headers_sent() vérifie si les pièces du header ont déjà été appelées donc cela doit être placé avant toute action sur le header sinon il risque d'y avoir des erreurs.

Pourquoi tester si la variable $temps, puisque tu la clairement défini dans les variables de ta fonction

Et enfin tu ne devrai pas définir ta variable adresse dans ta fonction de cette manière cela pourrais aussi générer des erreurs utilise simplement $adresse au lieu de $adresse=""

Petite dernière question bête, pourquoi utiliser un header location si tu utilise le header refresh ensuite ?
j ai dit une bétise lol
&& et mieux
car "&&" est plus prioritaire que "and"
Non 11 et AND ne sont pas équivalent
@Bono62 : Je ne vois pas l'intérêt de rediriger Google au bout de x secondes ^^ Cependant pour les autres navigateurs, je ne vois pas comment gérer leur redirection ^^'

A moins que je ne me trompe, mais bon.

@JejeScript : && et AND ne sont-ils pas équivalents ? ^^'
J'ai ajouté le headers_sent (: Merci !
il serait mieux de vérifier le headers_sent()
et d'éviter && au lieu de AND qui serait plus approprier dans ce cas

voici une fonction que j'utilise pour la redirection :

function redirection($url, $time=0) {
if (!headers_sent()) {
header("refresh: $time;url=$url");
exit;
}
else {
echo '<meta http-equiv="refresh" content="',$time,';url=',$url,'">';
}
}
Refresh est une entête HTTP non standard. Même si elle est supportée par la totalité des navigateurs populaires, il reste des problèmes de compatibilité non négligeables. Selon certains articles, et d'après quelques tests, il se trouve que cela entraine exactement le même comportement qu'une meta Refresh. Donc, ne fonctionne pas pour les crawlers (Googlbot...) et certains clients (wget, cURL...)