[PHP/MySQL] modif email d'un utilisateur

Fermé
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 4 mars 2007 à 17:17
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 5 mars 2007 à 17:31
bonjour,

mon site internet me permet d'identifier les utilisateurs.
pour chacun je propose l'édition du profil contenant les informations personnelles dont l'adresse e-mail qui tient lieu d'identifiant.

pour modifier l'e-mail il faut que je le fasse confirmer. pour cela j'envoie un petit e-mail à mon cher utilisateur contenant un lien.

ça c'est ce que je souhaite obtenir. pour l'instant le profil existe et je peux envoyer un e-mail à l'utilisateur, dans le cas où il a oublié son mot de passe par exemple.

maintenant je me demande quelle stratégie adopter pour le changement d'e-mail.
comment stocker l'information 'nouvel e-mail' en attendant la confirmation ? fichier temporaire ou nouveau champ dans la bdd ?
vers quoi dois-je faire pointer le lien contenu dans l'e-mail de confirmation ? vers un script fixe qui gèrera des variables ou vers un fichier temporaire qui fera la mise à jour et disparaitra ensuite ?

savez-vous quelle est la technique utilisée habituellement ?

PHP4/MySQL 4.1.9
A voir également:

2 réponses

ZarTenBerg Messages postés 85 Date d'inscription jeudi 1 mars 2007 Statut Membre Dernière intervention 3 juin 2012 4
5 mars 2007 à 01:52
Bonsoir, en fait je voulais t'informer que mon trus avais marcher
c'était juste le mysql_fetch_row que je devais ajoutter, ca a marchait tout de suite mais là je suis en train d'essayer de faire marcher le script des photos (le site que tu m'as donner ) ca marche, j'inserre des images mais je n'arrive pas a les afficher pourtant j'ai suivit les mémes instructions (biens sur j'ai changer la base tout ), je serai trés ravis que tu me réponde ..;je c que t la meilleur dans ce forum !!!! i take for granted that you're the BEST IN THIS FORUM !!!!
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
5 mars 2007 à 02:34
GRRRRRRRRRR !!!!!!!!!

au risque de paraître désagréable je te rappelle que ce forum est soumis à une charte !!!
n'utilise pas une discussion pour en poursuivre une autre ! il te suffisait de suivre le fil de ta propre discussion, j'y aurais sans doute jeter un coup d'oeil.
ou alors utilise la messagerie !

----------------------------------------
re GRRRRRRRRRR !!!!!!!!!

au risque de paraître original, JE SUIS UN GARCON !
il est hasardeux de tirer des conclusions hâtives à partir des pseudos, sinon je serais tenter de penser que tu es originaire de Mars ou de je-ne-sais-où...
:D

----------------------------------------
re re GRRRRRRRRRR !!!!!!!!!

non je ne suis pas le meilleur sinon je ne me prendrai pas laborieusement la tête sur mon embryon de site...

pour les photos --> nouvelle discussion, avec un bout de code car je peux être serviable mais pas voyante...
;o)
0
Reivax962 Messages postés 3672 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
5 mars 2007 à 15:55
Bonjour,

Voilà la solution que j'adopterais, personnellement :

Version simple :

- Creation d'une table "changement_email" avec 2 champs : "ancien_email" et "nouvel_email"
- A la demande de changement d'email, tu vérifies que le nouvel email ne correspond pas DEJA à un compte, et tu ajoutes une ligne dans cette table, et tu lui génères un lien du genre http://tonsite/chgtEmail?old=ancien@ancien.com&new=nouveau@nouveau.com

- Tu te crées une page chgtEmail.php, qui prenne ces deux arguments, vérifie que la demande de changement d'email existe bien dans la table "changement_email" (même ancienne ET nouvelle adresses), et valide le changement. Puis tu supprimes la ligne dans ta table changement_email.

Ca ne me parait pas trop compliqué à mettre en place.
Par contre, tu n'as alors aucun moyen de te souvenir des changements d'emails, ce qui n'est pas forcément une bonne idée (en cas d'erreur ou autre, aucun moyen de revenir en arrière)

D'où une version plus complexe, où ta table "changement_email" contient 5 champs :
- ancien_email
- nouvel_email
- date_de_demande
- date_de_confirmation
- booleen : confirmation (1 si la demande a été confirmée, 0 sinon).

La suite est similaire, sauf que tu n'effaces plus la ligne de la table de changement. Comme ça, tu gardes toutes les traces si quelqu'un arrive à "pirater" un compte et à en changer l'email... (Enfin, je ne connais pas ton site, si ça se trouve il n'y a aucun intérêt à faire ça :p )

Dans la solution proposée, il est très important de vérifier que le couple (ancienne; nouvelle adresse) ait bien été enregistré dans une demande de changement, sinon n'importe qui peut appeler la page en question avec des paramètres au pif pour récupérer les comptes d'autres personnes...
Une solution pour éviter, dans tous les cas, ce genre de désagrément serait celle-là :

- dans ta table de changement d'email, rajoute un champ "chgt_id"
- au moment de la demande de validation, tu génères une chaine de caractère au hasard. Vérifie qu'elle n'est pas déjà dans la base (ça ne devrait pas arriver si tu prends un hasard assez "grand"), et mets-là dans le champs "chgt_id".
- dans le lien que tu crées, tu ne mets plus que cet ID :
http://tonsite/chgtEmail?chgt_id=TLIH836453YDG3U
- Quand on clique sur ce lien, tu fais pareil qu'avant, en récupérant les informations de la table de changement d'email à partir de l'id.

Voilààààààààà

J'espère qu'avec tout ça, tu trouveras ton bonheur !

Xavier

PS : je n'ai jamais fait ce genre de manip, mais si je devais le faire, c'est comme ça que je m'y prendrais (version complète : avec un ID et le plus d'infos possible, dates, etc.). N'hésite pas à me donner un retour si tu utilises ces méthodes, me dire si ça marche bien / si c'est nul, et pourquoi :)
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 922
5 mars 2007 à 17:31
salut,

j'opte pour la version nouvelle table dans la bdd.
elle me paraissait inutile mais le coup de maintenir un log des changements me paraît très intéressant !

à quoi servira-t-il ?
sans doute à rien car mon site ne présente strictement aucun intéret pour un pirate hormis la liste des e-mails et ce n'est pas cher payé pour ce genre de manip... :oD

d'un autre côté je viens du développement d'application et l'expérience m'a appris que le premier danger dont il faut se préserver c'est l'utilisateur ! et j'ai eu recourd aux logs pour pister l'utilisation de telle ou telle fonction.

donc je prend ta solution au complet avec id de changement.

vous tiendrez au courant mais ça risque d'attendre un peu, j'ai pas mal de choses sur le feu...
0