<?php // fonction de redirection function Redirect($adresse="", $temps = NULL){ if(!empty($adresse) && $temps==null){ header("Location: $adresse"); exit(_("<a href=\"$adresse\" title=\"Cliquez ici\">Si la redirection ne se fait pas, cliquez ici.</a>")); } elseif(!empty($adresse)) { if (!headers_sent()) { header("Refresh:$temps; url=$adresse"); exit; } else { echo '<meta http-equiv="refresh" content="'.$temps,';url='.$adresse.'" />'; } } else { Redirect($_SERVER['REQUEST_URI']); } }
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...)
il serait mieux de vérifier le headers_sent()et d'éviter && au lieu de AND qui serait plus approprier dans ce casvoici 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,'">'; }}
@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 !
Non 11 et AND ne sont pas équivalent
j ai dit une bétise lol && et mieux car "&&" est plus prioritaire que "and"
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 fonctionEt 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 ?
JejeScript : D'accord pour le && ^^Apparemment tu n'as pas compris son utilité :pSi $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 sinonFin Sinon ^^
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
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 ? ? ?
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.
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 976 169 membres 106 nouveaux aujourd'hui 16 318 membres club