Problème connexion avec cookies

Suivre ce topic
Ce topic est suivi par : Personne...
Ce topic a été résolu
Blast0Kd

Blast0Kd Le 30 août 2016 à 10:45 (Édité le 25 janvier 2019 à 17:52)

Bonjour à tous !
J'ai utilisé un système de reconnexion par cookie (différent de celui de primfx) et quelque fois, je crois que c'est quand j'upload des fichiers sur mon site, le cookie contenant toute les informations se retrouve avec un contenu delete.
Voici le code lors de la connexion : 
$remember_token = str_random(250);
$db->prepare('UPDATE users SET remember_token = ? WHERE id = ?')->execute([$remember_token, $user->id]);
setcookie('remember', $user->id . '==' . $remember_token . sha1($user->id . 'ratonlaveurs'), time() + 60 * 60 * 24 * 360, '/');
La fonction de reconnexion : 

function reconnect_from_cookie(){
    if(session_status() == PHP_SESSION_NONE){
        session_start();
    }
    if(isset($_COOKIE['remember'])) ){
        require_once 'db.php';
        if(!isset($db)){
            global $db;
        }
        $remember_token = $_COOKIE['remember'];
        $parts = explode('==', $remember_token);
        $user_id = $parts[0];
        $req = $db->prepare('SELECT * FROM users WHERE id = ?');
        $req->execute([$user_id]);
        $user = $req->fetch();
        if($user){
            $expected = $user_id . '==' . $user->remember_token . sha1($user_id . 'ratonlaveurs');
            if($expected == $remember_token){
                
                $_SESSION['auth'] = $user;
                setcookie('remember', $remember_token, time() + 60 * 60 * 24 * 360, '/');
                
            } else{
                setcookie('remember', NULL, -1, '/');
            }
        }else{
            setcookie('remember', NULL, -1, '/');
        }
    }
}
En aucun cas je n'ai fait ces deux code car j'avais a flemme 😀.
Je pense que ce problème n'est pas récurrent car j'ai fait des recherche et je n'ai pas trouvé, merci d'avance 😉
Blast0Kd

Blast0Kd Le 30 août 2016 à 16:15

up
TheOldNoob

TheOldNoob Le 30 août 2016 à 23:42

Salut l'ami,


En réalité, ça fait 3 fois que je reviens sur ton problème et que je reli ton code, mais j'arrive pas as comprendre quel est ton problème et ou tu veux en venir avec ton code :(
TheFlameflo

TheFlameflo Le 31 août 2016 à 03:41

Salut !

J'ai remarqué quelque chose de bizarre (enfin, je crois).
Si tu n'as pas set le fetch mode sur FETCH_OBJ. $user->id, $user->remember_token, etc. Ne fonctionneront pas.

Bonne chance ! 😀
Blast0Kd

Blast0Kd Le 3 septembre 2016 à 12:11

J'ai trouvé le problème : Chaque fois que je me connecte sur un autre appareil sur le même compte (je ne me souvenais plus d'avoir fait ça mais..) ça détruit les sessions des autes ordinateurs pour une quetions de sécurité.
Exemple : vous vous connecter à un cybercafé et vous oublié de vous déconnecter, donc n'importe qui peut avoir accès à vos informations personnels etc... Et bien il suffit simplement de se connecter sur un autre poste pour supprime cette session.
Ingénieux non ? 😉
Meci de votre aide à vous deux
Vous devez être connecté pour poster une réponse. Se connecter ou Créer un compte