Boumbadaboum Posté 12 Août 2005 Posté 12 Août 2005 (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é 12 Août 2005 par Boumbadaboum
buzzistic Posté 12 Août 2005 Posté 12 Août 2005 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 ?
Boumbadaboum Posté 12 Août 2005 Auteur Posté 12 Août 2005 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 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?
Compte supprimé Posté 12 Août 2005 Posté 12 Août 2005 (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...) Modifié 12 Août 2005 par jeroen
Boumbadaboum Posté 12 Août 2005 Auteur Posté 12 Août 2005 (modifié) puis j'envoie un email un lien qui pointe sur ma page login.php :monsite.com/login.php?mbr=crypted_passLorsque 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é 12 Août 2005 par Boumbadaboum
Boo2M0rs0 Posté 13 Août 2005 Posté 13 Août 2005 (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...) <{POST_SNAPBACK}> Bonjour, Je suis un peu septique avec cette méthode que se passe-t-il si deux personnes de ton site ont le même mot de passe ??? quoi quoi ? impossible ? :/ Modifié 13 Août 2005 par Boo2M0rs0
Boumbadaboum Posté 13 Août 2005 Auteur Posté 13 Août 2005 (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é 13 Août 2005 par Boumbadaboum
Compte supprimé Posté 13 Août 2005 Posté 13 Août 2005 Bonjour,Je suis un peu septique avec cette méthode 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
TheRec Posté 13 Août 2005 Posté 13 Août 2005 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...)
xpatval Posté 13 Août 2005 Posté 13 Août 2005 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
Compte supprimé Posté 13 Août 2005 Posté 13 Août 2005 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é
Boumbadaboum Posté 13 Août 2005 Auteur Posté 13 Août 2005 et moi alors ?? 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?
Compte supprimé Posté 13 Août 2005 Posté 13 Août 2005 et moi alors ?? 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.
Boumbadaboum Posté 13 Août 2005 Auteur Posté 13 Août 2005 ok merci jeroen Quelle est la fonction php qui génère le numéro aléatoire?
Compte supprimé Posté 13 Août 2005 Posté 13 Août 2005 comme dit précédemment, la fonction uniqid("") génère un numéro unique (basé sur l'heure courante) tu peux faire md5(uniqid(""))
Boumbadaboum Posté 13 Août 2005 Auteur Posté 13 Août 2005 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 ?
Compte supprimé Posté 13 Août 2005 Posté 13 Août 2005 tu génère une fois le nombre aléatoire et tu le place dans une variable. c'est cette variable que tu inscrit dans ta base et que tu joint au mail. ok ?
Boumbadaboum Posté 13 Août 2005 Auteur Posté 13 Août 2005 (modifié) ouais c'est ce que j'ai pensé Modifié 13 Août 2005 par Boumbadaboum
recherche_webmaster Posté 22 Août 2005 Posté 22 Août 2005 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 ?
recherche_webmaster Posté 22 Août 2005 Posté 22 Août 2005 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é
Anonymus Posté 22 Août 2005 Posté 22 Août 2005 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.
recherche_webmaster Posté 22 Août 2005 Posté 22 Août 2005 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
Compte supprimé Posté 22 Août 2005 Posté 22 Août 2005 (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é 22 Août 2005 par jeroen
xpatval Posté 22 Août 2005 Posté 22 Août 2005 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
recherche_webmaster Posté 22 Août 2005 Posté 22 Août 2005 $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?
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant