Login : Case à cocher "rester connecté"

Avatar du membre
Eléphant du PHP | 88 Messages

27 mai 2015, 22:19

Bonjour,
je souhaiterai un peut d'aide SVP, car je galère vraiment à faire un truc.

Bon but, pour un admin, est de laisser la possibilité aux utilisateurs de cocher "rester connecté" lors du login.

Quelle est la meilleur solution ? et surtout la + sécurisée?
Les session? les cookies?

J'ai fait pleins de recherches dans google, je comprend pas grand chose à ce sujet.

Merci beaucoup.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 mai 2015, 22:58

Hello !

La solution est effectivement le cookie. C'est la seule information qui est conservée entre deux connexions (sur le poste de l'utilisateur) et qui te permettra de le reconnaître, même si sa session est expirée :)

Quand à la question de sécurité, tout dépend de ce que tu mettras dans le cookie. Évite par exemple d'y mettre juste l'id de l'utilisateur (qu'il suffirait de modifier pour usurper le compte de quelqu'un d'autre) ou le mot de passe en clair (on ne sait pas qui a accès aux cookies sur le poste de l'utilisateur) ...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Avatar du membre
Eléphant du PHP | 88 Messages

28 mai 2015, 09:34

OK merci.
Pour le moment j'ai seulement ceci:
Login:

Code : Tout sélectionner

// se souvenir de moi avec les cookies - case à cocher if(isset($_POST['remember'])) { setcookie("cookname", sha1($_SESSION['Auth']['pseudo'] . uniqid() . $_SERVER['REMOTE_ADDR']), time() + 3600 * 24 * 3, "/", '', false, true); }
Logout:

Code : Tout sélectionner

// supprimer cookies setcookie("cookname", sha1($_SESSION['Auth']['pseudo'] . uniqid() . $_SERVER['REMOTE_ADDR']), time() - 3600 * 24 * 3, "/", '', false, true); unset($_COOKIE['cookname']);
ça fonctionne, mais on ma dit (sans trop m'expliquer pourquoi) que ce n'est pas très sécurisé.
Comment faut-il faire pour que ce soit vraiment sécurisé?

Merci beaucoup

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

28 mai 2015, 10:20

Bonjour,

Si on veut faire encore mieux, il faudrait juste remplacer uniqid() par openssl_random_pseudo_bytes()
Quand tout le reste a échoué, lisez le mode d'emploi...