1. ⭐⭐⭐ Grosse PROMO en cours sur ma plateforme SEO My Ranking Metrics
    Rejeter la notice

[PHP] Cookie vide dans une fonction, complet juste avant ou après

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Pierre-Henri, 25 Novembre 2014.

  1. Pierre-Henri
    Pierre-Henri Nouveau WRInaute
    Inscrit:
    21 Janvier 2010
    Messages:
    42
    J'aime reçus:
    0
    Bonsoir,

    Je travaille actuellement sur un site immobilier où je souhaite stocker la recherche de l'internaute dans un Cookie afin qu'il n'ait pas à ré-entrer tous ses critères de recherche à chaque revisite du site.

    Pour cela, j'utilise le code suivant pour mémoriser le Cookie :
    Code:
    $search_query = serialize($_POST);
    setcookie('search_params', $search_query, time()+31536000, "/");
    Puis pour lire le Cookie, j'utilise le code suivant :
    Code:
    $search_params = unserialize(stripslashes($_COOKIE['search_params']));
    Enfin, lorsque je fais un var_dump($_COOKIE['search_params']), celui-ci retourne parfois un résultat vide alors que le Cookie existe bel et bien.

    Par-exemple, lorsque je fais un var_dump(); juste avant une fonction, j'ai bien le contenu de mon Cookie qui s'affiche, alors que ce même var_dump() au sein de la fonction retourne un résultat vide ...

    J'ai essayé en ajoutant un addslashes() avant de sérializer, j'ai essayé de jouer avec le Path et Domain dans la définition du Cookie mais rien n'est concluant.

    Je ne comprends pas pourquoi mon Cookie peut être vide au sein d'une fonction...

    Avez-vous déjà rencontré ce cas de figure ?

    D'avance, merci pour votre retour.

    pH
     
  2. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 808
    J'aime reçus:
    242
    Pourquoi un stripslashes() ? Magic quotes activées ?
    Résultat vide ? Mais qd même isset() ou juste empty() ?
     
  3. Pierre-Henri
    Pierre-Henri Nouveau WRInaute
    Inscrit:
    21 Janvier 2010
    Messages:
    42
    J'aime reçus:
    0
    Oui, Magic Quotes activé.

    Le Cookie est bien isset() mais string(0) ""

    pH
     
  4. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 808
    J'aime reçus:
    242
    Ben tu devrais déjà commencer par mettre à off cette m***e :)
     
  5. Pierre-Henri
    Pierre-Henri Nouveau WRInaute
    Inscrit:
    21 Janvier 2010
    Messages:
    42
    J'aime reçus:
    0
    Je ne suis pas certain que ce soit l'origine du problème...
     
  6. spout
    spout WRInaute accro
    Inscrit:
    14 Mai 2003
    Messages:
    8 808
    J'aime reçus:
    242
    Non plus, juste une piste. Un exemple de cookie sérializé ?
    Dans le débogueur (F12), tu vois bien ce cookie non vide ?
    Donc tu as bien ce cas de figure ? Les 2 à la suite de l'autre ?
    PHP:
    <span class="syntaxdefault"></span><span class="syntaxkeyword">echo&nbsp;</span><span class="syntaxdefault">$_COOKIE</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'search_params'</span><span class="syntaxkeyword">];&nbsp;</span><span class="syntaxcomment">//&nbsp;OK<br /><br /></span><span class="syntaxkeyword">function&nbsp;</span><span class="syntaxdefault">foobar</span><span class="syntaxkeyword">()<br />{<br />echo&nbsp;</span><span class="syntaxdefault">$_COOKIE</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'search_params'</span><span class="syntaxkeyword">];&nbsp;</span><span class="syntaxcomment">//&nbsp;KO<br /></span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">foobar</span><span class="syntaxkeyword">();&nbsp;</span><span class="syntaxdefault"></span>
     
  7. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 196
    J'aime reçus:
    1
    Porté de la variable ?
     
  8. Pierre-Henri
    Pierre-Henri Nouveau WRInaute
    Inscrit:
    21 Janvier 2010
    Messages:
    42
    J'aime reçus:
    0
    Spout, j'essaye ça demain :)

    Zeb, un Cookie n'est pas superglobal ?

    pH
     
  9. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 196
    J'aime reçus:
    1
    C'est la question que je me pose vue ton souci :D
     
  10. Pierre-Henri
    Pierre-Henri Nouveau WRInaute
    Inscrit:
    21 Janvier 2010
    Messages:
    42
    J'aime reçus:
    0
    Bonjour à vous,

    Après une bonne nuit de sommeil, j'ai trouvé ... Bug de débutant mais c'est toujours ceux-là qui sont les plus difficiles à trouver ...

    Dans une portion de code qui me sert à géolocaliser l'internaute s'il n'a jamais cherché sur le site... :

    Code:
    if($_SERVER['GEOIP_CITY'] && (!isset($_COOKIE['search_params']) || $_COOKIE['search_params'] = '')) {
    Je pense que vous n'allez pas avoir de mal à trouver :)

    Merci pour votre coup de main en tout cas.

    pH
     
  11. zeb
    zeb WRInaute accro
    Inscrit:
    5 Décembre 2004
    Messages:
    12 196
    J'aime reçus:
    1
    Lol belle assignation
     
  12. Blount
    Blount WRInaute impliqué
    Inscrit:
    18 Novembre 2010
    Messages:
    707
    J'aime reçus:
    0
    Dans ce cas, autant utiliser empty, ça t'aurait même évité cette erreur ;)
    PHP:
    <span class="syntaxdefault"><br /></span><span class="syntaxkeyword">if(</span><span class="syntaxdefault">$_SERVER</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'GEOIP_CITY'</span><span class="syntaxkeyword">]</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">&&</span><span class="syntaxdefault"> empty</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_COOKIE</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'search_params'</span><span class="syntaxkeyword">]))</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br />&nbsp;</span><span class="syntaxdefault"></span>
    Et pour répondre à ta question, oui $_COOKIE est superglobal tout comme $_GET, $_POST, $_REQUEST, $_SESSION, et bien d'autre ;)
    http://fr.php.net/manual/fr/language.variables.superglobals.php
     
  13. Pierre-Henri
    Pierre-Henri Nouveau WRInaute
    Inscrit:
    21 Janvier 2010
    Messages:
    42
    J'aime reçus:
    0
    Merci Blount,

    Oui, en effet, empty() est carrément adapté dans ce cas de figure... Mais je suis du genre "pourquoi faire simple quand on peut faire compliqué" ! :-D

    Bonne journée.
    pH
     
Chargement...
Similar Threads - [PHP] Cookie vide Forum Date
[php] Cookie d'un domaine vers un sous-domaine Développement d'un site Web ou d'une appli mobile 29 Août 2014
[PHP] Détecter le navigateur / bot en fonction du HTTP_USER_AGENT Développement d'un site Web ou d'une appli mobile 14 Septembre 2019
[PHP] Détecter le navigateur / bot en fonction du HTTP_USER_AGENT Développement d'un site Web ou d'une appli mobile 12 Janvier 2017
[PHP]Cci mails Développement d'un site Web ou d'une appli mobile 18 Août 2014
[PHP] gethostbyname Développement d'un site Web ou d'une appli mobile 15 Février 2014
[PHP] file_get_contents retourne un "Connection timed out" Développement d'un site Web ou d'une appli mobile 14 Février 2014
[PHP] Regex Complexe Développement d'un site Web ou d'une appli mobile 29 Octobre 2013
[PHP] Formulaire dynamique Développement d'un site Web ou d'une appli mobile 2 Mai 2013
[php] error suite à code antiduplication Développement d'un site Web ou d'une appli mobile 5 Février 2013
[PHP] Condition et include Développement d'un site Web ou d'une appli mobile 31 Janvier 2013
  1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies.
    Rejeter la notice