Bonjour ,
Avec PHP comment envoyer un e-mail contenant un code d'activation qui garantira que l'internaute a bel et bien entré sa propre adresse?
Merci de votre aide
Bonjour ,
Avec PHP comment envoyer un e-mail contenant un code d'activation qui garantira que l'internaute a bel et bien entré sa propre adresse?
Merci de votre aide
1. Généré un nombre au hasard
2. L'enregistrer dans la base de données avec l'adresse email
3. Envoyer un email contenant un message disant de cliquer sur un lien comme :
4. Activer le compte si l'adresse email correspond au numéro.
Code : Sélectionner tout - Visualiser dans une fenêtre à part http://www.monadresse.com/activercompte.php?email=monemail@email.com&code=1234567
Pour plus de sécurité, tu pourrais ajouter : "Si vous n'avez pas demandé de compte cliquez ici..." et effacer le compte s'il clique sur ce lien.
Si un essai infructueux est fais sur activercompte.php, supprimer le compte pour éviter le piratage.
Et voilà.
Bof... Combien de fois j'ai reçu des emails dont le lien était foireux et que je devais recopier à la main dans la barre d'adresse et donc susceptible de faire une erreur...
Sinon dac avec la méthode proposée, on peut même se payer le luxe de supprimer l'adresse email de l'url. Un md5 ou autre hashage de l'adresse comme code est peut-être suffisant...
Je précise que cette question est récurente et qu'elle a été traitée maintes fois sur ce forum :
Moi j'ai codé ça !
Dans ta table sql contenant les membres (dans l'exemple on va l'appeler membre)
ajoute un champ en INT appelé activation. et un autre champ 'code_activation' en varchar (20)
Lors de l'inscription, tu metteras le champ à valeur 1, si l'inscription c'est dérouler avec succès ajoute ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 function random($car) { $string = ""; $chaine = "abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVXYZ0123456789"; srand((double)microtime()*1000000); for($i=0; $i<$car; $i++) { $string .= $chaine[rand()%strlen($chaine)]; } return $string; } $mail = htmlspecialchars(addslashes($_POST['email'])) ; $mot_pass = htmlspecialchars(addslashes($_POST['mot_passe'])) ; $nom = htmlspecialchars(addslashes($_POST['nom'])) ; $prenom = htmlspecialchars(addslashes($_POST['prenom'])) ; $age = htmlspecialchars(addslashes($_POST['age'])) ; $code_validation = random(15); mysql_query("INSERT INTO `membre` VALUES('', '". $nom ."', '". $prenom ."', '". $age ."', '', '". $mail ."', '". $mot_passe ."', '". $code_validation ."', '1')"); echo "Votre inscription c'est dérouler avec succès.<br /> Un code de validation sera envoyer dans votre boite mail à l'adresse <b>$mail</b> . Si vous n'avez pas reçu d'email, regarder dans votre boite de spams, sinon contactez l'equipe du site."; $destinataire = $mail ; $expediteur = "admin.angels@gmail.com" ; $reponse = $expediteur; $text_mail = "http://www.url.com/validation.php?adresse=$mail&validation=$code_validation"; mail($destinataire, "Validez Votre inscription a PixiBum", "Merci de validez votre compte a l'adresse suivant : $text_mail", "From: $expediteur\r\nReply-To: $reponse");
ensuite, la page validation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <?php $mail = addslashes(htmlspecialchars($_GET['adresse'])); $code_validation = addslashes(htmlspecialchars($_GET['validation'])); include ('inc/bdd.php'); $result = " SELECT code_validation FROM membre WHERE adresse_mail = '" .$mail. "' "; $req = mysql_query($result) or die('Erreur SQL !<br>'.$result.'<br>'.mysql_error()); $data = mysql_fetch_assoc($req); if($data['code_validation'] = $code_validation) { mysql_close(); echo " <font color='red'><b>Votre compte est maintenant validé</b></font><br />" ; mysql_query(" UPDATE membre SET validation ='2' WHERE email='". $mail ."' "); mysql_close(); }
Partager