Redirection header() en fonction de la valeur d'un cookie
19 messages • Page 1 sur 2 • 1, 2
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
Redirection header() en fonction de la valeur d'un cookie
Bonjour,
Bon c'est la suite du topic sur les cookies et le référencement, mais là c'est plus technique alors j'ouvre un nouveau thread dans la section approprié :
Voilà, j'ai donc un disclaimer sur un site.
Ce disclaimer fonctionne avec un cookie PHP, testé sur toutes les pages. S'il n'est pas initialisé ou si sa valeur est "non", le visiteur est redirigé vers le disclaimer de index.php .
Ca, ça fonctionne.
Maintenant, je veux améliorer le système : si le gars arrive via un lien profond, il est redirigé vers l'accueil pour qu'il certifie son âge. Et ensuite, le header le renvoit sur la page par laquelle il était arrivé.
Ca, ça fonctionne pas encore.
Voilà comment j'ai fait (en partie grâce à vous, cf le topic précédent) :
En haut de toutes les pages du blog :
Et sur l'index, je fais cela :
Mais en plus, pas moyen d'afficher la valeur du cookie page. Pourtant je regarde dans le navigateur et il y est initialisé et sa valeur est bien celle de la page précédente.
Voilà, merci d'avance pour votre précieuse aide
Bon c'est la suite du topic sur les cookies et le référencement, mais là c'est plus technique alors j'ouvre un nouveau thread dans la section approprié :
Voilà, j'ai donc un disclaimer sur un site.
Ce disclaimer fonctionne avec un cookie PHP, testé sur toutes les pages. S'il n'est pas initialisé ou si sa valeur est "non", le visiteur est redirigé vers le disclaimer de index.php .
Ca, ça fonctionne.
Maintenant, je veux améliorer le système : si le gars arrive via un lien profond, il est redirigé vers l'accueil pour qu'il certifie son âge. Et ensuite, le header le renvoit sur la page par laquelle il était arrivé.
Ca, ça fonctionne pas encore.
Voilà comment j'ai fait (en partie grâce à vous, cf le topic précédent) :
En haut de toutes les pages du blog :
- Code: Tout sélectionner
//on va vérifier si le visiteur est un bot, si oui, il n'a pas besoin de cookie (ou il n'indexera jamais les pages)
$moteur_tab=array("bot","Scooter","Slurp","Voila","WiseNut","Fast","Index","Teoma","Mirago","search","find","loader","archive","Spider","Crawler");
foreach($moteur_tab as $key)
// si ce n'est pas un bot, on fait le test du cookie :
if(!stristr($_SERVER['HTTP_USER_AGENT'],$key))
{
if(!isset($_COOKIE["majeur"]) OR $_COOKIE["majeur"]=='non')
{
//on créé un cookie pour lui adjoindre la valeur de la page en cours et s'en servir dans le header du disclaimer afin de rediriger directement sur la page souhaitée au départ, en l'occurence celle visitée lors de cette instruction.
$page=$_SERVER['PHP_SELF'];
setcookie
(
"page",
"$page"
);
die(header('Location: http://www.site.com'));
}//ferme if !isset $cookie
;}//ferme if !isset stristr()
Et sur l'index, je fais cela :
- Code: Tout sélectionner
// avant cela, il y a les instructions pour vérifier l'âge du gars
// si tout est bon, on initialise le cookie "majeur" à "oui", et les autres pages s'afficheront alors.
setcookie
(
"majeur",
"oui"
);
//si le gars est arrivé par l'accueil, il n'y a pas de cookie page, on le redirige donc vers la page par défaut. Sinon, la valeur du header prend celle de la variable page dans le cookie (initialisée en haut des pages des blogs lors de l'instruction de test des cgu, voir bloc de code précédent)
if(!isset($_COOKIE["page"]))
{header($he);}// page par défaut
if(isset($_COOKIE["page"]))//si il y a le cookie page, ça signifie que le gars était arrivé par une page du blog et donc on le redirige (théoriquement...) sur celle-ci :
{
$page=$_COOKIE["page"];
header($page);}// page d'arrivée sur le blog
;}
Mais en plus, pas moyen d'afficher la valeur du cookie page. Pourtant je regarde dans le navigateur et il y est initialisé et sa valeur est bien celle de la page précédente.
Voilà, merci d'avance pour votre précieuse aide
-

erestrebian - WRInaute impliqué

- Messages: 394
- Inscription: Ven Juin 15, 2007 12:55
et en passant par une variable session?
je veux dire que tu définis la variable sur la page d'arrivée à la place du cookie. Est-ce que cela fonctionne?
c'est quoi la page par défaut? le disclaimer ou l'index quand tu dis "page par défaut"
je veux dire que tu définis la variable sur la page d'arrivée à la place du cookie. Est-ce que cela fonctionne?
c'est quoi la page par défaut? le disclaimer ou l'index quand tu dis "page par défaut"
Déja sauf problème de lecture dans ton code (non-indenté), je pense qu'il y a une erreur sur le traitement des robots.
Tu itères sur la liste des robots autorisés et tu compare chaque élément avec le nom du visiteur/robot. :
Admettons que le bot "voila" passe, comme tu le teste par rapport au premier élément "bot", tu vas satisfaire ton test (!stristr()) et au final tu vas le rediriger vers la page d'accueil.
(edit : en lisant le thread original, dans le message de jeroen il parcourt le tableau et met un flag si il trouve un moteur. C'est donc ce que tu dois faire. )
Ensuite si tu dois débugguer, fait un print_r sur $_COOKIE.
Et évites les header multiples.
Tu itères sur la liste des robots autorisés et tu compare chaque élément avec le nom du visiteur/robot. :
- Code: Tout sélectionner
foreach($moteur_tab as $key)
if(!stristr($_SERVER['HTTP_USER_AGENT'],$key)){...}
Admettons que le bot "voila" passe, comme tu le teste par rapport au premier élément "bot", tu vas satisfaire ton test (!stristr()) et au final tu vas le rediriger vers la page d'accueil.
(edit : en lisant le thread original, dans le message de jeroen il parcourt le tableau et met un flag si il trouve un moteur. C'est donc ce que tu dois faire. )
Ensuite si tu dois débugguer, fait un print_r sur $_COOKIE.
Et évites les header multiples.
Attention lors de la déclaration des cookies : ils ne sont valables que dans le répertoire de la page où ils ont été créés, sauf si tu précises autre chose :
le "/" précise que le cookie est valable depuis l'index.
- Code: Tout sélectionner
setcookie("coo",$coo,$datedevalidite,"/");
le "/" précise que le cookie est valable depuis l'index.
Merci pour la remarque Jeroen.
Là j'essaie de le faire avec des sessions, mais pas moyen ça ne fonctionne pas non plus.
j'ai fait ça sur la page du disclaimer :
Là si il n'y a pas la variable de session "page", ça fonctionne bien.
Mais si elle y est, ça ne fonctionne pas.
J'ai fait un test avec un echo dans le deuxième if et ça fonctionne. J'ai affiché le contenu de la variable et elle contient bien la page visitée précédemment.
Mais le header ne fonctionne pas, même si je met en valeur une URL telle que http://www.google.com
Je pige pas. Du tout. Soupiiiiiirrrrrrr
Là j'essaie de le faire avec des sessions, mais pas moyen ça ne fonctionne pas non plus.
j'ai fait ça sur la page du disclaimer :
- Code: Tout sélectionner
if(!isset($_SESSION["page"]))
{header($he);}
if(isset($_SESSION["page"]))
{
$page=$_SESSION['page'];
header($page)
;}
Là si il n'y a pas la variable de session "page", ça fonctionne bien.
Mais si elle y est, ça ne fonctionne pas.
J'ai fait un test avec un echo dans le deuxième if et ça fonctionne. J'ai affiché le contenu de la variable et elle contient bien la page visitée précédemment.
Mais le header ne fonctionne pas, même si je met en valeur une URL telle que http://www.google.com
Je pige pas. Du tout. Soupiiiiiirrrrrrr
Meeuuuhhh, tu n'as pas envie de te baser sur le référant ? par exemple, s'il existe et que le visiteur n'a pas de cookie, tu fais la redirection et tu lui crées un cookie pour plus l'avoir.
Il me semble que les robots voyagent sans cookies ni référants non ?
Il me semble que les robots voyagent sans cookies ni référants non ?
Je suis pas borné à ma soluce, ceci dit je n'ai pas bien compris la tienne et je me dis qu'il ne faut plus qu'une pichenette pour que mon script fonctionne (nonobstant la partie sur la détection des robots).
Je ne vois pas pourquoi la redirection ne se fait pas alors que la condition est testée et vérifiée.
Je ne vois pas pourquoi la redirection ne se fait pas alors que la condition est testée et vérifiée.
je te l'ai dit, n'utilise qu'un seul header à la fin de ton traitement.
- Code: Tout sélectionner
$page = $he;
if(isset($_SESSION["page"])){
$page=$_SESSION['page'];
}
header($page);
YoyoS a écrit:Meeuuuhhh, tu n'as pas envie de te baser sur le référant ? par exemple, s'il existe et que le visiteur n'a pas de cookie, tu fais la redirection et tu lui crées un cookie pour plus l'avoir.
Il me semble que les robots voyagent sans cookies ni référants non ?
Le problème est qu'au moment où le gars à validé le disclaimer, le référent sera l'index.
Sinon la syntaxe correcte du header est celle-ci :
- Code: Tout sélectionner
header("Location: http://www.nouveausite.com/");
Y'a rien à faire, ça m'envoie sur la page d'accueil du blog.
Pourtant quand j'affiche le contenu de $_SESSION['page'];
ça m'indique bien l'URL de la page profonde et non celle de la page d'accueil du blog.
Mais le header ne fonctionne que vers la page d'accueil du blog.
Pourtant quand j'affiche le contenu de $_SESSION['page'];
ça m'indique bien l'URL de la page profonde et non celle de la page d'accueil du blog.
Mais le header ne fonctionne que vers la page d'accueil du blog.
jeroen a écrit:Sinon la syntaxe correcte du header est celle-ci :
- Code: Tout sélectionner
header("Location: http://www.nouveausite.com/");
Bon par contre là j'ai essayé ça et la redirection est ok :
Je me demande si ce n'est pas parce que l'url récupérée par PHP_SELF commence par / ce qui donne(rait) dans l'url un //blog
Mais quand j'essaie dans la barre de navigation de taper l'url avec //, ça fonctionne, je ne suis pas pour autant redirigé vers l'accueil du blog (sans quoi le résultat eut été trompeur, l'erreur ne venant pas du header)
Bon, j'essaie autre chose, je vais récupérer l'url dans un champ post, sur la page du disclaimer. Je reviens, merci de votre aide.
- Code: Tout sélectionner
$page = $he;
if(isset($_SESSION["page"]))
{$page="http://www.site.com/blog/index.php/2008/06/10/1-first-post";}
header("location: $page");
Je me demande si ce n'est pas parce que l'url récupérée par PHP_SELF commence par / ce qui donne(rait) dans l'url un //blog
Mais quand j'essaie dans la barre de navigation de taper l'url avec //, ça fonctionne, je ne suis pas pour autant redirigé vers l'accueil du blog (sans quoi le résultat eut été trompeur, l'erreur ne venant pas du header)
Bon, j'essaie autre chose, je vais récupérer l'url dans un champ post, sur la page du disclaimer. Je reviens, merci de votre aide.
Dernière édition par Meeuuuhhh le Mer Juin 11, 2008 19:36, édité 1 fois.
Je l'ai fait et l'url de la page s'affiche bien, la condition est vérifiée, c'est ça que je pige pas.
Je me demande si ce n'est pas dû à la syntaxe de la variable de session, car quand j'avais regardé dans le cookie, l'url était du genre /blog/index.php%$var2008/06/10/&var%first-post
Bref un gros truc bien crade, car l'url n'était pas rewritée. Peut-être est-ce celà qui fait bugger le header ?
Je me demande si ce n'est pas dû à la syntaxe de la variable de session, car quand j'avais regardé dans le cookie, l'url était du genre /blog/index.php%$var2008/06/10/&var%first-post
Bref un gros truc bien crade, car l'url n'était pas rewritée. Peut-être est-ce celà qui fait bugger le header ?
19 messages • Page 1 sur 2 • 1, 2
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Gérer l'entête HTTP en PHP
- Aperçu des différents types de redirection
- Référencement : gestion des redirections par Yahoo
- Redirection (PHP, JavaScript, serveur...)
- A propos des redirections sauvages (302)
- Exclure son propre trafic de Google Analytics
- X-Robots-Tag : directive pour bloquer les robots dans l'entête HTTP : explications
- Incidence du PHP sur le référencement
- Optimiser ses codes HTTP pour le référencement
- Tutoriel complet sur les redirections (301, 302, JavaScript, ...)
Consultez la description détaillée des produits ou services de Google suivants : Google Related Links, Google Click-To-Call
- Test de redirection
Cet outil vous permet de tester la validité d'un lien pour le référencement. Il vous indique la nature du lien (lien en dur, redirection bien gérée par les moteurs ou redirection mal gérée par les moteurs). - Analyseur d'entête HTTP
Cet outil vous permet de connaître le code HTTP renvoyé par le serveur pour une page donnée.
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité



le forum