Validation d'un compte par mail avec url...

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 485 fois - Téléchargée 31 fois

Contenu du snippet

Ce script valide un compte membre par mail avec URL integrée.
Il faut:
- 2 pages, une pour l'inscription (avec votre formulaire html biensur) et une pour la verification.
- 2 tables, une pour le compte provisoir et une pour les comptes validés (definitif)

-La page d' inscription envoie les données du formulaire et une clé aleatoire dans la table compte_provisoir.
-La page de verification compare la clé et l id, si elles sont identiques les données de la table compte_provisoir seront effacées et deplacées dans la table compte_definitif

Heu je suis debutant et c est mon tout premier script que je post ici

Source / Exemple :


//------------------------------
// PAGE D INSCRIPTION 
//------------------------------

//creation d une variable qui genere une clé a 10 chiffres 
$numero = "0123456789";
$clef = str_shuffle($numero);

//envoi des données dans la table compte_provisoir avec la clé
if (sizeof($_POST))
{
    if (isset($_POST['pseudo']) and isset($_POST['password']) and isset ($_POST['mail'])) 
          {
    
             $pseudo = $_POST['pseudo'];
             $password = $_POST['password'];
             $mail = $_POST['mail'];   

             mysql_connect("localhost", "root", ""); 
             mysql_select_db("test"); 
             mysql_query("INSERT INTO compte_provisoir VALUES('', '$clef', '$pseudo', '$password', '$mail')")or die(mysql_error()); 
             $reponse_id = mysql_query("SELECT id FROM compte_provisoir WHERE pseudo = '$pseudo'")or die(mysql_error());
            mysql_close(); 
	
            echo "tu vas recevoir un mail";

           //le mail est envoyé, l'url contient la clé et l'id pour la comparaison (page verification)	
            while ($donnees = mysql_fetch_array($reponse_id)) 
	  {
	       $id = $donnees['id'] ;
                       $mail_destinataire = $_POST['mail'];             
                       $sujet = " validation de l'inscription";
                       $message = "Ton mot de passe est: $password \n Ton pseudo est: $pseudo \n \n Pour valider ton inscription clique sur le lien suivant: \n http://127.0.0.1:81/Php/zone_membre_validation.php?id=$id&clef=$clef";
                       $head = "Salut $pseudo ";
                       mail($mail_destinataire, $sujet, $message, $head);
                  }
             }

//-----------------------------
// PAGE VERIFICATION (http://127.0.0.1:81/Php/zone_membre_validation.php?id=$id&clef=$clef)
//-----------------------------

//ici on recupere la clé et l id de l'url
if (isset($_GET['id']) and isset($_GET['clef']))
   {
       $recherche_id= $_GET['id'];
       $recherche_clef = $_GET['clef'];

       //on recupere les données de la table compte_provisoir
       mysql_connect("localhost", "root", ""); 
       mysql_select_db("test"); 
       $reponse_comparaison = mysql_query("SELECT id, clef FROM compte_provisoir WHERE id = '$recherche_id'")or die(mysql_error());
       $reponse_provisoir = mysql_query("SELECT clef, pseudo, password,   mail FROM compte_provisoir WHERE id = '$recherche_id'")or die(mysql_error());
      mysql_close(); 

       while ($donnees_provisoir = mysql_fetch_array($reponse_provisoir))
        {
           $clef = $donnees_provisoir['clef'];
           $pseudo = $donnees_provisoir['pseudo'];
           $password = $donnees_provisoir['password'];
           $mail = $donnees_provisoir['mail'];
        }

        
        while ($donnees_comparaison = mysql_fetch_array($reponse_comparaison))
       {    
                //ici le plus important on compare la clé de la table compte_provisoir a celle de l'url, idem pour l'id, si elles sont identiques alors on en fait une requette pour balancer les données dans le compte_definitif et on supprime celles du compte provisoir
	if ($donnees_comparaison['clef'] == $recherche_clef  and  $donnees_comparaison['id'] == $recherche_id)
                { echo "compte validé"};  	  
                 mysql_connect("localhost", "root", ""); 
                 mysql_select_db("test"); 
                 mysql_query("INSERT INTO compte_definitif VALUES('', '$clef', '$pseudo', '$password', '$mail')")or die(mysql_error());
                 mysql_query("DELETE FROM compte_provisoir WHERE clef = '$clef '")or die(mysql_error());	  
	 mysql_close(); 
       }      
         
         else  {echo "echec validation";}  
          
         //si la variable clé (de la table compte_provisoir)
         if (empty($clef))
	  { echo "votre compte est deja validé";}

   }

Conclusion :


Vous pouvez ameliorer le script par exemple: effacer un compte de la table compte_provisoir au bout d'une semaine grace à la date...
J attends vos remarques
merci

A voir également

Ajouter un commentaire

Commentaires

keke_boys
Messages postés
4
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
18 mai 2006
-
>>Titox :
ouais j'ai laisse tombé le $_GET pour une autre méthode, mais bon à mon avis ca vient de multimania, un pote a testé sous free et il n'a pas de problème.
merci quand meme pour ta reponse ;)
cs_Tit0x
Messages postés
174
Date d'inscription
mardi 3 janvier 2006
Statut
Membre
Dernière intervention
9 juillet 2006
-
>>keke_boys : bon depuis février t'as peut être trouvé mais j'pense que chez multimania(lycos) ils utilisent une URL de " masquage " comme chez ifrance. C'est à dire que tu ne verras pas l'url du fichier que tu lis (si tu vas sur ton site en tappant l'adresse : http://ton-site.com et que tu clic sur un lien tu n'auras pas cette adresse : http://ton-site.com/ton-fichier.php) Il garde toujours la même adresse comme pour les redirections en .fr.st // .fr.cx // etc...

Donc les $_GET ne fonctionneront pas...
keke_boys
Messages postés
4
Date d'inscription
lundi 9 janvier 2006
Statut
Membre
Dernière intervention
18 mai 2006
-
# //ici on recupere la clé et l id de l'url
# if (isset($_GET['id']) and isset($_GET['clef']))
# {
# $recherche_id= $_GET['id'];
# $recherche_clef = $_GET['clef'];
.................

simpa le code , mais j'ai un ptit problème (plutot chi***)
voilà pour le moment la base de donnée et le site sont hébergés chez multimania , je sais pas si le problème vient de là , mais les GET marchent pas, jusqu'à l'inscription ca marche nikel , j'ai verifié ds la table compte_provisoir c'est bien rentré , mais dès que la page verification est ouverte , j'ai fait un test d'affichage des valeur de $recherche_id et $recherche_clef et ca m'affiche rien...
donc si quelqu'un peut m'éclairer sur le problème ca serait simpa ;)
merci d'avance
chanlle
Messages postés
20
Date d'inscription
vendredi 3 septembre 2004
Statut
Membre
Dernière intervention
25 août 2005
-
Pour les debutants, l'incolade , elle vas ou?
GiUsTiNo
Messages postés
129
Date d'inscription
lundi 26 avril 2004
Statut
Membre
Dernière intervention
30 juin 2012
-
J'en profite qu'on parle de ca pour demander quelque chose...
J'ai completement oublié comment, dans un requête mysql, envoyer un "timer" => genre effacement d'une table client au bout de 24 heures :p
Merci de votre réponse :-)

Giustino, Admin VegaGames

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.