Probleme setcookie et header(location)

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Recif, 10 Mars 2010.

  1. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Bonjour,

    J'ai un problème duquel je n'arrive pas à me dépêtrer... :(

    J'aimerais faire une détection de cookie au chargement de la page pour rediriger le visiteur ou pas en fonction de ce dernier. Malheureusment je suis obligé de cliquer deux fois sur le lien pour le cookie prenne effet. La redirection header(location: n'a pas l'air de prendre le cookie en compte la première fois...

    Code:
    if ($iPhone == true || $WinMob == true) {
    	setcookie('iphone', '1', (time() + 62208000),'/');
    }
    if ($op == "noiphone") {
    	setcookie('iphone', '0', (time() + 62208000),'/');
    }
    if ($op == "iphone") {
    	setcookie('iphone', '1', (time() + 62208000),'/');
    }
    
    if ($_COOKIE['iphone'] == 1) {
    	header("location:iphone_index.php");
    }
    
    En gros je détecte si le device est un iphone et si oui, je el redirige sur une page spéciale. Mais l'utilisateur peut choisir de voir le site original en cliquant sur un lien index.php?op=noiphone
    Mais quand je clique sur le lien, la page d'origine réapparait. Il faut que je rafraichisse une fois ou que je reclique sur le lien pour que le cookie soit validé par le navigateur... Comment puis-je valider ce cookie directement en une fois?...

    merci
     
  2. Ukri
    Ukri Nouveau WRInaute
    Inscrit:
    6 Septembre 2009
    Messages:
    22
    J'aime reçus:
    0
    Les cookies enregistrés sur une page deviennent disponibles sur la prochaine page chargée

    avec ça normalement ça ira :
    Code:
    if ($iPhone == true || $WinMob == true) {
    	setcookie('iphone', '1', (time() + 62208000),'/');
    	header("location:iphone_index.php");
    }
    if ($op == "noiphone") {
    	setcookie('iphone', '0', (time() + 62208000),'/');
    }
    if ($op == "iphone") {
    	setcookie('iphone', '1', (time() + 62208000),'/');
    	header("location:iphone_index.php");
    }
    
    if ($_COOKIE['iphone'] == 1) {
    	header("location:iphone_index.php");
    }
    
     
  3. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Merci.

    Mais marche pas... La première détection se passe bien mais quand je clique sur le lien index2.php?op=noiphone, il revient toujours à index_iphone.php

    J'ai trouvé une solution alternative, mais pas très propre :

    Code:
    if (($iPhone == true || $WinMob == true) && $_COOKIE['iphone'] == "") {
    	setcookie('iphone', '1', (time() + 62208000),'/');
    	echo "<meta http-equiv=\"refresh\" content=\"0; url=index2.php\">";
    exit;
    }
    if ($op == "noiphone") {
    	setcookie('iphone', '0', (time() + 62208000),'/');
    echo "<meta http-equiv=\"refresh\" content=\"0; url=index2.php\">";
    exit;
    }
    if ($op == "iphone" && ($iPhone == true || $WinMob == true)) {
    	setcookie('iphone', '1', (time() + 62208000),'/');
    	echo "<meta http-equiv=\"refresh\" content=\"0; url=index2.php\">";
    exit;
    }
    
    if ($_COOKIE['iphone'] == 1) {
    	header("location:iphone_index.php");
    }
     
  4. Ukri
    Ukri Nouveau WRInaute
    Inscrit:
    6 Septembre 2009
    Messages:
    22
    J'aime reçus:
    0
    oui en fait dans le test if ($op == "noiphone") tu remets le cookie à zéro, mais ça ne sera visible que sur la prochaine page... donc le cookie pour la page actuelle reste sur "1"
    mets un header("location:index.php"); dans ce test...
     
  5. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Oui, j'ai déjà essayé, mais il me fait la même chose... :(
     
  6. stopher
    stopher Nouveau WRInaute
    Inscrit:
    10 Mars 2010
    Messages:
    16
    J'aime reçus:
    0
    Salut ,

    essaye on complétant comme ceci :

    Code:
    if ($iPhone == true || $WinMob == true) {
       setcookie('iphone', '1', (time() + 62208000),'/');
       header("Status: 200");
       header("Location: http://vraiurl.com/iphone_index.php");
       exit;
    }
    
    Tu ajoute en fait un code HTTP dan l'entête , et surtout , avec exit tu indique de ne pas exécuter la suite de ta page , bref tu rediriges immédiatement .

    Ch.
     
  7. Recif
    Recif WRInaute impliqué
    Inscrit:
    25 Août 2004
    Messages:
    848
    J'aime reçus:
    0
    Bonjour Stopher,

    Finalement j'ai opté pour le meta refresh... Et j'ai déjà mis en prod, donc j'ose pas trop faire des modifs maintenant... :-( Désolé...
    Merci
     
Chargement...
Similar Threads - Probleme setcookie header(location) Forum Date
php 5.3.8 problème de variable avec setcookie Développement d'un site Web ou d'une appli mobile 13 Avril 2012
setcookie time() Problème avec Internet explorer Développement d'un site Web ou d'une appli mobile 14 Janvier 2010
Gros problème sur la profondeur de mes pages Problèmes de référencement spécifiques à vos sites Aujourd'hui à 09:06
Problème de htaccess chez Ionos URL Rewriting et .htaccess 12 Septembre 2022
Problème sur jquery avec fonction asynchrone Développement d'un site Web ou d'une appli mobile 6 Septembre 2022
Problème de crawl et d'indexation Crawl et indexation Google, sitemaps 1 Septembre 2022
WordPress Problème affichage style avec Elementor (titre, bordures, separateur) Administration d'un site Web 8 Août 2022
Problème d'indexation de backlinks Débuter en référencement 24 Juillet 2022
Problème d'indexation de backlinks Problèmes de référencement spécifiques à vos sites 21 Juillet 2022
Probleme de visibilité de ma page Facebook Facebook 5 Juillet 2022
problème avec le développeur Droit du web (juridique, fiscalité...) 22 Juin 2022
Problème désindexation des pages de Google Débuter en référencement 21 Juin 2022
Problème d'indexation de pages sur Google Problèmes de référencement spécifiques à vos sites 31 Mai 2022
problème de redirection non souhaitée Administration d'un site Web 28 Avril 2022
Problème d'indexation Produits Prestashop Crawl et indexation Google, sitemaps 28 Avril 2022
Problème d'affichage des campagnes Google Ads dans un tableau de bord Data Studio AdWords 26 Avril 2022
Problème de vitesse d'affichage des pages sur Analytics Google Analytics 26 Avril 2022
Problème : Google Crawl et Index des pages en No Index et bloqué par le robot.txt Crawl et indexation Google, sitemaps 26 Avril 2022
Problème avec GA4 : nb de visiteurs temps réel et par jour Google Analytics 19 Avril 2022
Problème indexation pages précises en React.js Débuter en référencement 19 Avril 2022