Aller au contenu

Sujets conseillés

Posté (modifié)

Bonsoir/bonjour à tous,

J'ai épluché google et je n'ai rien trouvé pour m'aider à réaliser un système de confirmation/validation automatique par email.

Je veux dire, vous connaissez le principe :

Le visiteur rempli un formulaire puis un message lui dit : Un email vient de vous être envoyé à l'adresse indiquée, votre participation ne sera prise en compte que lorsque vous aurez cliqué sur le lien contenu dans l'email. Alors le visiteur va ouvrir le mail, clique le lien et gagne au loto. Non, il se retrouve sur une page du site qui lui "t balaise mon gars, t'as cliqué sur le lien maintenant t un pote à nous etc..." Et hop sa participation est effective.

Bon sérieusement, ce que je ne pige pas c'est :

-Le lien contenu dans l'email est-il toujours le même ou contient-il une variable, si oui en rapport avec quoi?

-Une fois cliqué, ce lien renvoit quelle information à la page où il aboutie?

- Et la page sur laquelle renvoit le lien, qu'elle script contient-elle? Que fait-elle?

- Qu'est ce qui se passe dans la base à différents niveaux (remplissage du formulaire : Où vont les données? Une fois le lien cliqué, que deviennent ces mêmes données? )

J'ai vraiment besoin de ce système, merci de m'expliquer au mieux s'il vous plaît.

Modifié par Boumbadaboum
Posté

Ben hum :

1) le formulaire enregistre tout dans une base de données

2) une fonction crée un mot de passe ou un chiffrement aléatoire et te l'envoie par e-mail avec le petit topo en question.

3) le lien recu contient dans l'url ton adresse e-mail fournie à l'inscription (ou pseudo) plus le chiffre.

4) La page sur lequel tu arrives en cliquant le script compare dans la base de données le chiffre qui est dans l'url ( test.php?copain=bill&verif=568797 ) et la liste des utilisateurs "en attente" avec leurs numéros (568797...) en attente aussi :)

5) Le script t'annonces que tu es balaise.

Il existe aussi une variante qui enregistre la date d'inscription pour laisser un délai. Exemple, au bout de X jours le compte est détruit de la base de données.

Ai-je répondu ?

Posté

Dans les grandes lignes, ça s'éclaire un peu oui quand même merci.

On va essayer d'être un peu plus précis petit à petit svp :huh:

Par exemple, qu'elle est cette mystérieuse fonction qui génère un lien aléatoire?

Et lorsque la personne valide le formulaire, un nombre aléatoire est aussi généré pour être inséré dans la table puis ce nombre est comparé avec celui renvoyé dans le mail?

C'est ça?

Posté (modifié)

Je t'explique comment JE fais :

dans ma table membres j'ai, entre autre, les champs

- email

- login

- pass

- date

- valid (sert a valider le compte)

L'internaute rempli (formulaire)

- email (unique)

- login (unique)

Je rentre dans la base

- email

- login

- mot de pass crypté par md5()

- date d'inscription

- valid=0

puis j'envoie un email un lien qui pointe sur ma page valid.php :

monsite.com/valid.php?mbr=crypted_pass

Lorsque le membre clique sur le lien, je l'identifie grace à la variable crypted_pass (qui est le mot de passe crypté) et je valide son compte (valid=1).

tous les jours je supprime les comptes dont valid=0 et date<24 heures

Pour se logger, le membre saisi login et passe, et je crypte son passe pour le comparer aux mots de passe (cryptés) de la base.

Lorsque le membre oubli son passe, il rentre son email, j'en génère un automatiquement et je lui envoie par email

Capito ?

(il y a peut être mieux...) :rolleyes:

Modifié par jeroen
Posté (modifié)

puis j'envoie un email un lien qui pointe sur ma page login.php :
monsite.com/login.php?mbr=crypted_pass

Lorsque le membre clique sur le lien, je l'identifie grace à la variable crypted_pass (qui est le mot de passe crypté) et je valide son compte (valid=1).

Donc mon idée est pas mauvaise alors ?

il remplit un formulaire (juste pour insérer un lien), ça entre dans la base un numéro aléatoire, et il reçoit un lien dans le mail avec le même numéro.

La page de réception compare le numéro aléatoire et le mail dans la table, avec la variable mail et numéro du lien cliqué, si c'est bon bah c'est bon sinon c'est pas bon.

C'est bon?

(J'vais au dodo là bonne nuit les amis, à demain )

Modifié par Boumbadaboum
Posté (modifié)
Je t'explique comment JE fais :

dans ma table membres j'ai, entre autre, les champs

- email

- login

- pass

- date

- valid (sert a valider le compte)

L'internaute rempli (formulaire)

- email (unique)

- login (unique)

Je rentre dans la base

- email

- login

- mot de pass crypté par md5()

- date d'inscription

- valid=0

puis j'envoie un email un lien qui pointe sur ma page valid.php :

monsite.com/valid.php?mbr=crypted_pass

Lorsque le membre clique sur le lien, je l'identifie grace à la variable crypted_pass (qui est le mot de passe crypté) et je valide son compte (valid=1).

tous les jours je supprime les comptes dont valid=0 et date<24 heures

Pour se logger, le membre saisi login et passe, et je crypte son passe pour le comparer aux mots de passe (cryptés) de la base.

Lorsque le membre oubli son passe, il rentre son email,  j'en génère un automatiquement  et je lui envoie par email

Capito ?

(il y a peut être mieux...) :rolleyes:

<{POST_SNAPBACK}>

Bonjour,

Je suis un peu septique avec cette méthode :boude: que se passe-t-il si deux personnes de ton site ont le même mot de passe ???

quoi quoi ? impossible ? :/

Modifié par Boo2M0rs0
Posté (modifié)

Donc mon idée est pas mauvaise alors ?

il remplit un formulaire (juste pour insérer un lien), ça entre dans la base un numéro aléatoire, et il reçoit un lien dans le mail avec le même numéro.
La page de réception compare le numéro aléatoire et le mail dans la table, avec la variable mail et numéro du lien cliqué.
C'est bon?

Bon mais mon idée alors elle est bonne ou pas possible ? (ce n'est pas pour une zone membre, c'est juste pour vérifier le mail de celui qui propose un lien/definition)

Modifié par Boumbadaboum
Posté
Bonjour,

Je suis un peu septique avec cette méthode  :boude: que se passe-t-il si deux personnes de ton site ont le même mot de passe ???

quoi quoi ? impossible ? :/

<{POST_SNAPBACK}>

Heu, je teste la correspondance du crypted_pass sur les champs dont valid=0, donc vraiment peu de chance qu'il y ait le même mot de passe en 24 heures...

Pour qu'il n'y ait aucun problème il faudrait en plus passer l'id d'inscription par exemple ;)

Posté

Boo2M0rs0 à raison...de plus passer un mot de passe crypté (même en MD5, c'est cassable par dictionnaire) par un e-Mail (apparemment en texte clair) est loin d'e^tre une bonne idée. Il est préférable d'avoir un champ "valid" comme cité précédemment et d'y stocker une chaine générée ainsi :

$activationkey = md5(uniqid(""));

Cela répond aussi à ta question Boumbadaboum, tu n'a pas besoin d'avoir un mot de passe ainsi...

Il y a un autre point important, tu ne devrais pas utiliser le nom d'utilisateur ou l'e-mail pour identitifer le compte dans l'URL, utilise l'ID de l'enregistrement dans la base. Lorsque tu fais ton INSERT dans la base de donnée tu récupère l'ID ainsi :

$id = mysql_insert_id();

(Ceci, si tu utilises mySQL, bien entendu...)

Posté
tous les jours je supprime les comptes dont valid=0 et date<24 heures

date inférieure à 24 heures ? j'aurais eu tendance à virer les comptes non-validés au-delà de 24 heures, 2 jours ou plus ...

xpatval

Posté
date inférieure à 24 heures ? j'aurais eu tendance à virer les comptes non-validés au-delà de 24 heures, 2 jours ou plus ...

xpatval

<{POST_SNAPBACK}>

en fait je vire les comptes de plus de 24 heures non validés toutes les nuits à la première page demandée aprés 2 heures du mat.

Il y aura donc entre 24 et 48 heures avant suppression d'un compte non validé

Posté

et moi alors :gueule: ??

Donc mon idée est pas mauvaise alors ?

il remplit un formulaire (juste pour insérer un lien), ça entre dans la base un numéro aléatoire, et il reçoit un lien dans le mail avec le même numéro.
La page de réception compare le numéro aléatoire et le mail dans la table, avec la variable mail et numéro du lien cliqué.
C'est bon?

Bon mais mon idée alors elle est bonne ou pas possible ? (ce n'est pas pour une zone membre, c'est juste pour vérifier le mail de celui qui propose un lien/definition)

C'est comme ça que je fais?

Posté
et moi alors  :gueule: ??

Donc mon idée est pas mauvaise alors ?

il remplit un formulaire (juste pour insérer un lien), ça entre dans la base un numéro aléatoire, et il reçoit un lien dans le mail avec le même numéro.
La page de réception compare le numéro aléatoire et le mail dans la table, avec la variable mail et numéro du lien cliqué.
C'est bon?

Bon mais mon idée alors elle est bonne ou pas possible ? (ce n'est pas pour une zone membre, c'est juste pour vérifier le mail de celui qui propose un lien/definition)

C'est comme ça que je fais?

<{POST_SNAPBACK}>

oui, sauf que tu identifie le gars uniquement par le numéro aléatoire unique.

Posté

je viens de prendre ça sur un site php :

<?php
$id = md5 (uniqid (rand()));
echo $id;
?>

Mais dans mon script, un numéro va être envoyé dans le lien du mail et un autre dans la base avec le contenu des champs du formulaire.

Ils doivent être identiques pour être comparés ensuite.

là, je vais avoir deux numéros différents non? ou je récupère les numéros dans une variable intermédiaire ?

  • 2 semaines plus tard...
Posté

Bonjour,

Je reprend ce post car je fais exactement ça en ce moment.

Mon souci est le suivant :

Dans le mail contenant le lien à confirmer j'écris ce même lien ainsi (dans le code php):

<?php
<a href=\"http://www.site.com/participation-$mailValide.htm\">
?>

Bien sur la varialbe $mailValide est le numéro aléatoire.

Mais c'est le format de lien qui m'étonne.

J'ai voulu utiliser un lien classique <a href="..."> cliquer sur ce lien </a> et là par contre ça ne fonctionne pas.

Comment doit-on faire alors SVP pour que ça fonctionne à coup sur ?

Posté

Outre le problème du lien évoqué juste au dessus j'ai cet autre problème :

J'envoie un lien de confirmation avec la variable contenant le numéro aléatoire qui a aussi été inséré dans la base.

la personne clique, elle arrive sur une page. un scripte va alors comparer le numéro de la variable contenu dans le lien avec les numéros aléatoire contenu dans les tuples de la table. Là où les deux numéros sont commun, une requête sql UPDATE le numéro aléatoire contenu dans le champ et le remplace par 1. Là c'est fini.

En théorie, parce qu'en pratique ma requête sql n'update rien du tout dans la base :

$verif="UPDATE `mot` SET `validation` = 1 WHERE `validation` = '$validation';
";
$verifR=mysql_query ($verif);

le champ dans la table est un varchar.

SVP une réponse je coince sur ça alors que j'ai presque terminé :huh:

Posté
En théorie, parce qu'en pratique ma requête sql n'update rien du tout dans la base :

$verif="UPDATE `mot` SET `validation` = 1 WHERE `validation` = '$validation';
";
$verifR=mysql_query ($verif);

Tu changes le champ validation, celui qui justement te permet de vérifier le code ?

Pour le fait que ca ne marche pas, tu devrais faire un 'echo' de ta requète, avant de la passer à mysql_query :

echo "
".$verif;

Pour la requète, j'aurais plutot vu quelque chose, comme ceci :

SET `validation` = '1'

Enfin, es tu sûr que ta variable '$validation' soit bonne ? Ne serait ce pas plutot :

$_GET['validation'] ? ou un truc comme ceci ?

Anonymus.

Posté

Tu changes le champ validation, celui qui justement te permet de vérifier le code ?

là je n'ai pas bien compris ta question anonymus.

Pour le fait que ca ne marche pas, tu devrais faire un 'echo' de ta requète, avant de la passer à mysql_query

:

ça je l'ai fait, le numéro aléatoire s'affiche bien dans la page de réception après avoir cliqué sur le lien dans le mail.

Pour la requète, j'aurais plutot vu quelque chose, comme ceci :

SET `validation` = '1'

ça j'ai essayé avec et sans les quotes, le résultat est le même : pas d'UPDATE.

le numéro aléatoire est généré avec md5 (uniqid (rand()));.

ça donne un numéro comme ça :

ff1d8d653431639c76e873bcada988ad

Posté (modifié)

$verif="UPDATE `mot` SET `validation` = 1 WHERE `validation` = \"$validation\";
";

Et pour comprendre pourquoi, fais un petit echo de $verif avant de faire la modif...

Modifié par jeroen
Posté
Bonjour,

Je reprend ce post car je fais exactement ça en ce moment.

Mon souci est le suivant :

Dans le mail contenant le lien à confirmer j'écris ce même lien ainsi (dans le code php):

<?php
<a href=\"http://www.site.com/participation-$mailValide.htm\">
?>

Bien sur la varialbe $mailValide est le numéro aléatoire.

Mais c'est le format de lien qui m'étonne.

J'ai voulu utiliser un lien classique <a href="..."> cliquer sur ce lien </a> et là par contre  ça ne fonctionne pas.

Comment doit-on faire alors SVP pour que ça fonctionne à coup sur ?

<{POST_SNAPBACK}>

A première vue, je dirais que ton lien doit contenir le numéro aléatoire en temps que paramètre, à moins que tu ne fasses de la réécriture d'url.

xpatval

Posté

$verif="UPDATE `mot` SET `validation` = 1 WHERE `validation` = \"$validation\";
";

Et pour comprendre pourquoi, fais un petit echo de $verif avant de faire la modif...

je viens d'essayer ça ne change rien. ça signifie quoi d'ailleur ces slashs placés là?

A première vue, je dirais que ton lien doit contenir le numéro aléatoire en temps que paramètre, à moins que tu ne fasses de la réécriture d'url.

oui ça ça n'est plus le problème, j'ai changé le contenu du lien

mais est-ce normal de l'envoyer sous la forme <a href="contenu du lien">

sans balise de fermeture ni rien?

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...