Mémorisation de l'email et du mot de passe

WW
Invité n'ayant pas de compte PHPfrance

18 juin 2007, 17:47

bonjour tout le mode!

j'ai un formulaire d'authentification avec des cases à cocher pour mémoriser l'email et le mot de passe, sauf je ne sais pas comment le faire!!

pleaaase help
merci merci

ViPHP
AB
ViPHP | 5818 Messages

18 juin 2007, 18:06

Habituellement on se sert d'une base de donnée pour enregistrer ce type d'informations. Alternativement tu peux également les enregistrer dans un fichier.
Dans les deux cas il te faut savoir utiliser PHP et dans le premier il faut ajouter mySql.
Il y a de bons tutoriaux sur www.phpdebutant.org qui pourront te servir notamment "récupérer les valeurs d'un formulaire" et suivant les cas "écrire et lire dans un fichier texte" ou les rubriques "SQL/mysql".
Si tu as de nombreuses données à enregistrer il faut passer par mySql car les fichiers textes ne sont pas adaptés pour traiter un gros volume de données.

WW
Invité n'ayant pas de compte PHPfrance

18 juin 2007, 18:12

désolé j'ai pas bien précisé, je veux mémoriser l'email et le mot de passe sur l'ordinateur, comme ce qu'il y'a dans la page authentification de hotmail.comme ça quand l'utilisateur ouvre la page une autre fois pour se connecter il trouvera son email et mot de passe déja saisis dans le formulaire.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

18 juin 2007, 18:25

Dans ce cas, il faut que tu déposes un cookie sur le poste client qui va contenir ses informations.
Regarde du côté de setcookie().

Quand tu affiches une page, il ne te reste plus qu'a regarder dans la superglobales $_COOKIE pour savoir s'il existe un cookie pour ce client et, dans l'affirmative, pour lui ré-afficher ses informations.

Je te préviens tout de même qu'il est possible qu'un client refuse les cookie et, dans ce cas, tu ne pourras rien faire.

Sans te donner le code, je te donne l'algo d'affichage des zones de saisies :

Code : Tout sélectionner

Si un cookie existe sur le poste client Alors Récupérer les informations du client Afficher ces informations Sinon Afficher des zones vides Fin si
Et l'algo de la zone de vérification des données saisies

Code : Tout sélectionner

Si les données saisies sont valides Alors Mémoriser ces informations dans le cookie Finsi
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Eléphanteau du PHP | 12 Messages

20 juin 2007, 06:36

Je te préviens tout de même qu'il est possible qu'un client refuse les cookie et, dans ce cas, tu ne pourras rien faire.
Dans ce cas il faut utiliser les sessions. Je ne les maîtrise pas suffisamment pour indiquer comment faire, d'autant qu'elles ne sont pas ma préoccupation actuelle, mais elles sont très bien expliquées dans "PHP5 avancé (Eyrolles)" et probablement dans nombre de tutoriaux, en particulier http://www.nexen.net/ ou http://www.developpez.com/.
A. ANDRE
------------------------------------------------------------------------
Long et caillouteux, est le chemin qui mène à la connaissance!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

20 juin 2007, 08:13

Les sessions ont une durée de vie définie par le serveur qui est généralement de 30mn.

De plus, pour utiliser une session, soit il faut un cookie de session sur le poste client pour contenir l'identifiant de la session utilisée, soit il faut le SSID dans l'url.
Dans le cas où le client refuse les cookie, c'est la seconde solution qui prime.

La solution des session est donc inutile dans le sens où :
- si le client accepte les cookies de session, les informations ne seront mémorisées que 30mn
- si le client les refuse, elles sont perdu dès que le visiteur change de site

J'insite sur le fait que déposer toi même un cookie en donnant une durée de vie de quelques jours (mois) est la solution la plus fiable. J'insiste également sur le fait que si le client refuse les cookie, c'est extrêmement difficile de trouver une parade.

Après, ça vaut ce que ça vaut, mais je me dit qu'un mec qui refuse les cookies, c'est quelqu'un qui ne veut pas qu'on manipule des informations sur son ordinateur, donc, qui refuse la mémorisation des informations ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
AB
ViPHP | 5818 Messages

20 juin 2007, 20:10

Effectivement les variables de session, comme leur nom l'indique, ne sont valables que pour la durée de la session et ne seront donc pas disponibles lors d'une prochaine connexion. Sur les serveurs que j'utilise elles ont une durée de vie de 180min par défaut (session.cache_expire).

Donc comme Zeus, je ne vois pas d'autre solution que d'utiliser un cookie pour stocker ce type d'information.

Pour prévenir les utilisateurs, on peux envoyer un cookie de test dès l'affichage de la page d'authentification.
Si le client coche la case "mémoriser" puis valide sa connexion tu peux donc directement - en testant l'existence du cookie de test - afficher un message d'avertissement si les cookies sont désactivés ex : "Pour enregistrer vos informations de connexion, vous devez autoriser les cookies pour ce site"

Mais le plus utile selon moi, est d'implémenter un envoi de mail automatique qui permet à l'utilisateur de retrouver un mot de passe perdu.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

20 juin 2007, 20:36

Mais le plus utile selon moi, est d'implémenter un envoi de mail automatique qui permet à l'utilisateur de retrouver un mot de passe perdu.
On parle de 2 fonctionnalités distinctes là :-k

le cookie peut permettre d'être logé automatiquement à l'arrivée sur un site alors que le rappel par mail permet de retrouver ses identifiants; )
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
AB
ViPHP | 5818 Messages

20 juin 2007, 22:05

@Zeus

Mouais, je me suis mal exprimé.
1/Le système de cookie est le plus approprié pour se loger automatiquement, nous sommes d'accord.

2/Je proposais en complément une petite vérification pour indiquer au client, si son navigateur refuse les cookies, que ses informations de connexion ne seront pas enregistrées.
Sur le sujet du cookie de connexion on s'arrête là.
Enfin pas tout à fait, car pour faciliter un peu plus la vie du client, le complément selon moi le plus utile est d'implémenter dans la page de connexion une fonction de renvoie du mdp par mail. Bien sûr c'est une fonctionnalité distincte mais qui sera très utile si les cookies de connexion ont été effacés ou sont perdus (changement de machine etc) et que le client a oublié son mdp :wink:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

20 juin 2007, 22:58

Pour la vérification de l'acceptation des cookies, c'est une excellente idée, je ne le remet pas en question ;)

Pour le renvoi de mdp, je voulais juste que ça soit clair pour WW que c'est une autre fonctionnalité, pas une autre solution ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer