Pb de cookie et sessions

zemele Messages postés 119 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 26 novembre 2009 - 26 avril 2008 à 10:54
zemele Messages postés 119 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 26 novembre 2009 - 26 avril 2008 à 14:45
Bonjour,

Comme je ne vois pas du tout où se situe mon erreur je vous met la totale...

J'essaie de faire en sorte que lorsqu'une personne s'est déjà identifié une première fois, lors de son prochain retour elle bascule automatiquement sur une nouvelle page.

Pour ça, lors de l'ouveture de session, je créée un cookie 'login' contenant sont login :

if($_POST['saveSession'] == 'oui'){

    setcookie('login', $_SESSION['login'], mktime(0,0,0,12,31,2035));
                          
}

La ça va, le cookie est correctement créée.

Dans la page d'accueil du site j'ajoute ceci :

session_start();

if(!isset($_SESSION['login'])){

    if(isset($_COOKIE['login'])){
                     $user $Con->select('Obj','*','user','login "'.$login.'"');
         
          session_regenerate_id();
          $_SESSION['login'] = $login;
          $_SESSION['id'] = $user->id_user;
       
          header('Location: index.php?page=accueilAdmin');
       
          exit();
    }

    session_destroy();
    unset($_SESSION);

}else{

    header('Location: index.php?page=accueilAdmin');
   
}

Grosso modo je verifie si il y a une session d'ouverte, si oui je redige de suite, si non je vérifie qu'un cookie existe et là ça ne marche pas. Il ne voit pas "isset($_COOKIE['login']", pourtant en vérifiant dans le navi le cookie est bien là.

Avez vous une idée sur mon erreur ?

5 réponses

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 avril 2008 à 11:07
Hello,

j'ai testé ton code basiquement (son comportement en tous cas) :
<?php
session_start();
if(isset($_SESSION['test'])) {
    setcookie('test', 'bla', strtotime('+ 1 day'));
} else {
    if(isset($_COOKIE['test'])) {
        echo 'yo';
    } else {
        $_SESSION['test'] = 'bla';
    }
}
if(isset($_COOKIE['test'])) {
    echo 'yo';
}
?>
et ça marche très bien. Au raffraichissement de la page, mon "yo" est bien affiché.
Je ne voyais de toute anière rien dans ton code qui puisse poser problème. Mon idée est donc que ton code plante à un moment...avant la redirection. Donc là-dedans :         $user $Con->select('Obj','*','user','login "'.$login.'"');
         
          session_regenerate_id();
          $_SESSION['login'] = $login;
          $_SESSION['id'] = $user->id_user;
       
Je mettrais des points d'arrêt, à ta place, pour logger dans un fichier ce qu'il se passe.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 avril 2008 à 11:08
Mon code est un peu différent du tien vu que je ne voulais pas faire ça sur 2 scripts hein...mais globalement, le comportement devrait être le même, à moins qu'il y ait un truc que je ne vosi pas dans ton code (encore possible, je ne me suis pas réveillé il y a très longtemps ;-) ).
0
zemele Messages postés 119 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 26 novembre 2009
26 avril 2008 à 11:17
Héhé moi non plus, et une soirée difficile en plus...

Dans les cas, merci pour ta réponse, mais je test avant la ligne de connexion et j'ai aussi testé sans elle. Mais rien y fait.

Juste je créée le cookie dans un sous dossier :
/modules/session/session.php

Et je vérifie à la racine au mileu du code
index.php

Et enfin je test en local.

Pourrait il y avoir quelque chose en rapport ?
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 avril 2008 à 11:51
J'en doute.
Fais ce que je t'ai dit, je pense que ton script planté à un moment.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
zemele Messages postés 119 Date d'inscription vendredi 29 juillet 2005 Statut Membre Dernière intervention 26 novembre 2009
26 avril 2008 à 14:45
A yé j'ai trouvé, je savais qu'il y avait une histoire de porté du cookie.

Mon erreur vient de lors de la création du cookie :
setcookie('login', $_SESSION['login'], mktime(0,0,0,12,31,2035));

Comme mon script est dans un sous-dossier, le cookie ne porte que sur cette portion de dossier. Il faut donc ajouter "/" pour lui donnée une portée sur tout le site :
setcookie('login', $_SESSION['login'], mktime(0,0,0,12,31,2035), '/');

Et là, ça fonctionne très bien.
0
Rejoignez-nous