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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120
| // Récupération des variables nécessaires au mail de confirmation
$email = $_POST['email'];
$verifemail = mysql_query("SELECT email FROM membres WHERE email='$email'") or die(mysql_error());
// Expression régulière permettant de vérifier si le format d'une adresse e-mail est correct */
$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
//vérifications du formulaire
// On vérifie si l'email n'est pas déjà enregistré
if (mysql_num_rows($verifemail) != 0)
{
echo 'This email: <b>'.$email.'</b> is already subscribed to our list!';
}
// L'adresse n'est pas vide
elseif (empty($email))
{
echo ('<div class=\"block\"><span class=\"headline\">OOPS! you made a little mistake...</span>
<div class=\"blocktext\">
<p>Please, enter your email address below in order to subscribe to our newsletter:<br/>
<form id="myForm" name="email" method="post" action="http://patati.com/newsletter/" >
<input type="text" name="email" />
<input type="submit" name="ok" value="ok" />
</form><br/>
<b>this is a required field.</b>
</p>
</div></div>');
}
// On vérifie que le format de l'e-mail est correct
elseif (!preg_match($regex_mail, $email))
{
echo ('<div class=\"block\"><span class=\"headline\">OOPS! you made a little mistake...</span>
<div class=\"blocktext\">
<p>This email:'.$email.' is not valid.</p><br/>
<p>Please, enter your email address below in order to subscribe to our newsletter:</p>
<form id="myForm" name="email" method="post" action="http://patati.com/newsletter/" >
<input type="text" name="email" />
<input type="submit" name="ok" value="ok" />
</form>
</div></div> ');
}
elseif(mysql_num_rows($verifemail) == 0 )
{
//création de la requête SQL:
$sql = "INSERT INTO membres (email) VALUES ( '$email') " ;
//exécution de la requête SQL:
$requete = mysql_query($sql) or die( mysql_error() ) ;
}
//affichage des résultats, pour savoir si l'insertion a marchée:
if($requete)
{
echo("<div class=\"block\"><span class=\"headline\">Almost Finished...</span>
<div class=\"blocktext\">
<p>To complete the subscription process check your email and click the link we just sent you.<br>
OTHERWISE YOU WILL NOT BE SUBSCRIBED<br>
Thanks !</p>
</div>
</div>") ;
}
// Connexion à la base de données
$dbh = new PDO('mysql:host=123456;dbname=database', 'login', 'mdp');
// Récupération des variables nécessaires au mail de confirmation
$email = $_POST['email'];
// Génération aléatoire d'une clé
$cle = md5(microtime(TRUE)*100000);
// Insertion de la clé dans la base de données (à adapter en INSERT si besoin)
$stmt = $dbh->prepare("UPDATE membres SET cle=:cle WHERE email like :email");
$stmt->bindParam(':cle', $cle);
$stmt->bindParam(':email', $email);
$stmt->execute();
// Préparation du mail contenant le lien d'activation
$destinataire = $email;
$sujet = " Please confirm subscription";
$expediteur="contact@moi.com";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: "Moi"<'.$expediteur.'>'."\n";
// Le lien d'activation est composé de l'email(email) et de la clé(cle)
$message = '
<p><a href="http://patati.com/validation.php?email='.urlencode($email).'&cle='.urlencode($cle).'">Click here to confirm your subscription to our list.</a></p>';
mail($destinataire, $sujet, $message, $headers) ; // Envoi du mail
?> |
Partager