Bonjour à tous,

Je travail toujours sur le blog que l'on as une fois le tutoriel fini, maintenant je voudrai rajouter le fait de ne plus être déconnecter automatiquement par les sessions mais justement garder un cookie qui nous permettrait de rester connecter.

J'ai repris l'exemple du site du zero :

if (!isset($_SESSION'User']) && !empty($_COOKIE'id']) &&!empty($_COOKIE'connexion_auto'])) {
                    $this->loadModel('User');
                    $user = $this->User->findFirst(array(
                        'conditions' => array('id' => $_COOKIE'id'])
                    ));
                    if(!empty($user)){          
                        $navigateur = (!empty($_SERVER'HTTP_USER_AGENT'])) ? $_SERVER'HTTP_USER_AGENT'] : '';
                        $hash_cookie = sha1('aaa'.$user->login.'bbb'.$user->password.'ccc'.$navigateur.'ddd');
                        if ($_COOKIE'connexion_auto'] == $hash){
                            $this->Session->write('User',$user);
                        }
                    }
                }

Et mon idée qui n'était malheureusement pas la bonne puisque j'ai un message d'erreur était de mettre ceci dans la function isLogged() du Session.php. Car à chaque fois que la page appel la function isLogged il reconnecterai automatiquement tout en étant transparent à l'utilisateur.

public function isLogged(){
        if (!isset($_SESSION'User']) && !empty($_COOKIE'id']) &&!empty($_COOKIE'connexion_auto'])) {
            $this->loadModel('User');
            $user = $this->User->findFirst(array(
                'conditions' => array('id' => $_COOKIE'id'])
            ));
            if(!empty($user)){          
                $navigateur = (!empty($_SERVER'HTTP_USER_AGENT'])) ? $_SERVER'HTTP_USER_AGENT'] : '';
                $hash_cookie = sha1('aaa'.$user->login.'bbb'.$user->password.'ccc'.$navigateur.'ddd');
                if ($_COOKIE'connexion_auto'] == $hash){
                    $this->Session->write('User',$user);
                }
            }
        }
        return isset($_SESSION'User']->role);
    }

Donc ma question c'est comment faire pour que dans le fichier session.php on puisse load un model ? Et si vous avez d'autres idées n'hesitez pas ;)

Cordialement

2 réponses


Moi je créerais le systeme de login dans un fichier qui est appellé tout le temps (genre bootstrap ou autre)

Hum je ne sais si c'est bien ou pas mais j'ai mis ceci dans le hook.php qui est appeler dans le controller.php, je peux laisser comme ça ou faut trouver une autre solution ?