Page 1 sur 3
confirmation inscription
Posté : 29 mai 2006, 09:33
par béka
Bonjour tout le monde, j'ai un petit problème auquel j'ai déjà réfléchi mais que je n'arrive pas à résoudre.
Mon site présente une partie où l'on peut s'inscrire mais ce que j'aimerais faire, c'est que lorsqu'on s'est inscrit, on recoit un mail de confirmation rapellant toutes les informations saisies (donc ca c'est bon, j'ai réussi). Mais je voudrais aussi que dans le mail figure un lien qui lorsque l'utilisateur clique dessus rende l'inscription définitive et valide. Ce ne serait qu'à ce moment, qu'après avoir validé grace au mail, qu'un tulisateur pourrait par la suite s'identifié.
Mais je ne vois pas comment faire. Pouvez vous m'aider?
Posté : 29 mai 2006, 09:55
par Ryle
Au plus logique, je dirais qu'il te faut un champ en plus caractérisant ton utilisateur afin de savoir s'il a terminé ou non son inscription. Celui-ci serait à faux par défaut et lorsque le lien aurait été cliqué, il passerait à vrai.
Le lien dans le mail enverrait donc l'utilisateur vers une page de ton site en lui passant en paramètre une info permettant d'identifier l'utilisateur (au plus simple son id

), et le script passerait le champ à vrai pour cet utilisateur
bon y a surement plus sécurisé que de passer directement l'id, mais ça te donne déjà une idée de comment ça peut se faire

Posté : 29 mai 2006, 10:05
par Tictac
Je suppose que tu enregistres ton utilisateurs dans la base de donnée.
ce que tu devrais donc faire , c'est dans la table mettre un cellule avec un numéro d'activation généré lors de l'envoye du mail ainsi qu'une cellule avec un etat actif ou inactif
quand tu envoye le mail , tu mets ce numéro d'acitvation en GET vers une page qui activera l'etat dans la cellule prévue
par ex: mettre à 1 si actif !!!
Tu vois le principe ?
Posté : 29 mai 2006, 10:27
par béka
je crois avoir compris le concept, c'est à dire que j'aurais dans ma table où j'enregistre les utilisateur un champ "actif" qui serait à 0 tant que l'utilisateur n'a pas cliqué sur le lien dans le mail et à 1 dès qu'il a cliqué.
Donc là jusque là ok.
Le lien dirigerai vers une page dans laquelle il y aurait une requete SQL disant, mettre 1 dans le champ "actif", donc là ok aussi.
Mais c'est là que ca se complique un peu pour moi, je ne vois pas comment passer les bons paramètres concernant un utilisateur qu'on veut identifier, comme son id par exemple.
Dans le mail figure déja son nom et mot de passe qu'il a saisi, peut-on utiliser ca?
Posté : 29 mai 2006, 10:32
par Sineljogy
dans le mail tu fais un lien par exemple :
..../activation.php?pseudo=user&code=blabla
blabla : tu remplaces par exemple par une version cryptée de l'adresse email de l'utilisateur ! (voir md5() ou sha1() par exemple...)
ensuite dans la page de activation.php, tu vérifie si l'email crypté correspond à l'email crypté par rapport à l'utilisateur de la bdd. tu comprends ?
et si ok tu change de status du champ "actif" de l'utilisateur
Posté : 29 mai 2006, 10:33
par Tictac
tu peux utiliser ce que tu veux , c'est une question de sécurité ensuite
c'est pour ca que générer un code est plus sécurisé ou alors, tu envoye le md5 de l'id !
Ensuite tu fais une recherche dans la base de donnée ou l' md5(id) = $_GET['activeid'];
Posté : 29 mai 2006, 10:51
par béka
je ne comprends pas tout à fait comment passer les paramètres entre le mail et la page activation.php ? (dsl je débute

)
Posté : 29 mai 2006, 11:02
par Sineljogy
Posté : 29 mai 2006, 11:11
par béka
ok ben je pense avoir tout pigé, je vais essayer de suite, et je vous retiens au courant si j'ai un soucis.
merci
Posté : 29 mai 2006, 11:31
par béka
une autre question.. comment passer des variables das l'URL dont on e connait pas la valeur?
&nom=$nom
? aussi simplement?
Posté : 29 mai 2006, 11:38
par Ryle
bah ouip... enfin avec le minimum de syntaxe php qui s'impose
http://.../page.php?nom=<?php echo $nom; ?>
ou
echo 'http://.../page.php?nom='. $nom;
et effectivement si tu as plusieurs variable les séparer par des &
http://.../page.php?nom=<?php echo $nom; ?>&id=<?php echo $id; ?>&...
Posté : 29 mai 2006, 12:59
par agité
Bon alors je t'explique le moyen par lequel je passe pour l'activation par email :
Je creer une table avec mes comptes avec:
-nom VARCHAR 50
-mot de passe VARCHAR 50
-email : VARCHAR 50
-clef : VARCHAR 50
-valide : ENUM oui,non
ensuite je creer un formulaire d'inscription ou je demande de rentrer l'email et le reste je verrifie ensuite tout avec un script puis si tout est valide je lance alors mon script qui envoie un mail() avec l'entete choisie etc et un lien dessus :
Pour confirmer votre inscription cliquer sur le lien suivant :
<a href="confirmerinscription.php?<?php echo $chaine_hachee; ?">Valider mon inscription</a>
ensuite tu creer un script confirmerinscription.php ou tu verrifie que le code qu'on te donne correspond bien a celui que tu as dans la base de donnée (que tu auras ajouter lors de l'inscription).
Ton script UDPATE ta base de donnée et transforme valide en oui.
Pour l'inscription tu fais simplement une verrification sur ta base de donnée si l'utilisateur est en 'non' validé tu lui fait verrifier ses mail sinon tu l'identifie et tu verrifie ensuite les log.
Je te colle ce soir mon script pour que tu puisse voir avec une screen de la base de donnée.
Cordialement.
Posté : 29 mai 2006, 14:23
par béka
d'accord ok, donc ca j'ai pigé.
Et est-il possible de rendre le lien de confirmation d'inscription qui se trouve dans le mail valide 1h uniquement par exemple ?
Posté : 29 mai 2006, 14:28
par Sineljogy
Tout est possible monsieur
Tout ajoute un champ à ta base de donnée tu y entre le time() quand l'user s'inscrit.
Et lorsque l'user clique sur lien dans le mail, tu compare entre l'heure de la bdd et l'heure actuel

Posté : 29 mai 2006, 14:38
par béka
d'accord
car en fait, lorsqu'on s'inscrit, les données sont ajoutées à la bdd et le champs "actif" est à 0, puis quand il clique sur le lien dans le mail, le champs "actif" passe à 1 et donc a ce momen, il peut s'identifier et accéder au reste du site.
Donc ta solution que tu me propose, c'est de mettre un champs time dans la meme table, et dans validation.php (la page vers lequel renvoie le lien) on compare l'heure actuelle et l'heure à laquelle il s'est inscrit, c'est bien ca?
Et comment faire la comparaison?