IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Cookies] problème de header/location en boucle avec cookie


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 30
    Points : 25
    Points
    25
    Par défaut [Cookies] problème de header/location en boucle avec cookie
    Bonjour,
    voilà mon problème : J'utilise un thème switcher sur mon site.
    En clair je change mon template en fonction de 2 url de provenance, on va dire google.com et yahoo.com.
    Donc je récupère avec HTTP_REFERER l'url d'origine (par exemple google.com) et je crée un cookie avec en paramètre le nom du template (selon l'url d'origine) s'il n'en existe pas et je recharge la page avec un header location --> la page est rechargée avec le nouveau template (en fonction de google.com dans notre exemple)
    Une fois arrivé sur la page chargée on refait le test donc cette fois-ci le cookie existe, 2 cas se présentent :
    - Le visiteurs se balade sur le site et donc avec le même cookie donc il se passe rien, le template reste le même.
    - Le visiteur va sur la 2ème url d'origine (yahoo.com) --> le template doit changer, donc rechargement de la page mais là le test se fait en boucle infini car le cookie existe toujours et apparement le HTTP_REFERER resterai le même.
    Conclusion :header location à l'infini
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    if (!isset($_COOKIE["wptheme"])) 
    {
    	if (mb_substr_count($_SERVER['HTTP_REFERER'], 'google.com')==1) 
    {
    		$cookiewptheme = "Template google";
    		$expire = time() + 30000000;
    		$urlinfo = parse_url(get_settings('siteurl'));
    		$path = $urlinfo['path'];
    		$domain = $urlinfo['host'];
    		setcookie("wptheme",$cookiewptheme,$expire,$path,$domain);
    		header("Location: http://www.monsite-1.fr/");
    	}
    	elseif (mb_substr_count($_SERVER['HTTP_REFERER'], 'yahoo.com')==1) 
    {
    		$cookiewptheme = "Template yahoo";
    		$expire = time() + 30000000;
    		$urlinfo = parse_url(get_settings('siteurl'));
    		$path = $urlinfo['path'];
    		$domain = $urlinfo['host'];
    		setcookie("wptheme",$cookiewptheme,$expire,$path,$domain);
    		header("Location: http://www.monsite-2.fr/");
    	}
    }
    elseif (isset($_COOKIE["wptheme"])) 
    {
    	if (mb_substr_count($_SERVER['HTTP_REFERER'], 'google.com')==1) 
    {
    		header("Location: http://www.monsite-1.fr/");
    	}
    	elseif (mb_substr_count($_SERVER['HTTP_REFERER'], 'yahoo.com')==1) 
    {
    		header("Location:  http://www.monsite-2.fr/");
    	}
    }
    Quelqu'un aurait une solution pour faire un test et éviter la boucle infini

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 30
    Points : 25
    Points
    25
    Par défaut
    Bon j'ai trouvé un test bidon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    if (isset($_COOKIE["wptheme"])) {
    	if (mb_substr_count($_SERVER['HTTP_REFERER'], 'google.com')==1) {
    		if($_COOKIE["wptheme"]!='template-1') {
    			$cookiewptheme = "template-1";
    			setcookie("wptheme",$cookiewptheme);
    			header("Location: http://www.monsite-1.fr/");
    		}
    	}
    	elseif (mb_substr_count($_SERVER['HTTP_REFERER'], 'yahoo.com')==1) {
    		if($_COOKIE["wptheme"]!='template-2') {
    			$cookiewptheme = "template-2";
    			setcookie("wptheme",$cookiewptheme);
    			header("Location: http://www.monsite-2.fr/");
    		}
    	}
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 26/02/2019, 20h16
  2. Menu expansif avec cookies : problèmes
    Par Sekisushai dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/01/2008, 12h06
  3. Problème de requête dans une boucle avec ADOQuery
    Par Ekik dans le forum Bases de données
    Réponses: 8
    Dernier message: 14/05/2007, 17h07
  4. [Cookies] Setcookie et header("Location: url")
    Par Cyoul dans le forum Langage
    Réponses: 6
    Dernier message: 10/10/2006, 06h06
  5. Problème redirection header ('location:
    Par Jiraiya42 dans le forum Langage
    Réponses: 1
    Dernier message: 24/06/2006, 18h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo