Confirmation d'inscription par mail PHP
Résolu
shoub-tcy
Messages postés
169
Date d'inscription
Statut
Membre
Dernière intervention
-
shoub-tcy Messages postés 169 Date d'inscription Statut Membre Dernière intervention -
shoub-tcy Messages postés 169 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai créé un formulaire d'inscription qui ammène à une page de traitement des informations rentrées par le visiteur, si ces informations sont incorrectes, un message apparait et marque l'erreur, ou si tout est correcte, le visiteur va recevoir un lien d'activation sur son mail pour qu'il puisse confirmer son inscription. Mon soucis est que le visiteur ne reçoit pas mon mail de confirmation, donc je ne vois pas ou se trouve la ou les erreurs. Voici mon code à partir du moment ou il n'y a pas d'erreur de la part du visiteur :
else
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=sitesql', 'root', '', $pdo_options);
$req = $bdd->prepare('INSERT INTO formulaire(nom, prénom, pseudo, e_mail, password, question_secrète, réponse_secrète, adresse, cp, ville, région, tel, date_naij, date_naim, date_naia) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
$req->execute(array($_POST['nom'], $_POST['prénom'], $_POST['pseudo'], $_POST['e_mail'], $_POST['password'], $_POST['question_secrète'], $_POST['réponse_secrète'], $_POST['adresse'], $_POST['cp'], $_POST['ville'], $_POST['région'], $_POST['tel'], $_POST['date_naij'], $_POST['date_naim'], $_POST['date_naia']));
// Récupération des variables nécessaires au mail de confirmation
$e_mail = $_POST['e_mail'];
$pseudo = $_POST['pseudo'];
// Génération aléatoire d'une clé
$cle = md5(microtime(TRUE)*100000);
// Insertion de la clé dans la base de données
$stmt = $bdd->prepare("UPDATE formulaire SET cle=:cle WHERE pseudo like :pseudo");
$stmt->bindParam(':cle', $cle);
$stmt->bindParam(':pseudo', $pseudo);
$stmt->execute();
// Préparation du mail contenant le lien d'activation
$destinataire = $e_mail;
$sujet = "Activer votre compte" ;
$entete = "From: inscription@monsite.com" ;
// Le lien d'activation est composé du pseudo(pseudo) et de la clé(cle)
$message = 'Bienvenue sur Intelli-vente,
Pour activer votre compte, veuillez cliquer sur le lien ci dessous
ou copier/coller dans votre navigateur internet.
http://127.0.0.1/Site/Page2/activation.php?pseudo='.urlencode($pseudo).'&cle='.urlencode($cle).'
---------------
Ceci est un mail automatique, Merci de ne pas y répondre.';
mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail
header('Location: ../page1.php');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
La clé est effectivement inséré comme il le faut dans la base de donnée, donc je pense que l'erreur intervient juste après...
J'ai créé un formulaire d'inscription qui ammène à une page de traitement des informations rentrées par le visiteur, si ces informations sont incorrectes, un message apparait et marque l'erreur, ou si tout est correcte, le visiteur va recevoir un lien d'activation sur son mail pour qu'il puisse confirmer son inscription. Mon soucis est que le visiteur ne reçoit pas mon mail de confirmation, donc je ne vois pas ou se trouve la ou les erreurs. Voici mon code à partir du moment ou il n'y a pas d'erreur de la part du visiteur :
else
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=sitesql', 'root', '', $pdo_options);
$req = $bdd->prepare('INSERT INTO formulaire(nom, prénom, pseudo, e_mail, password, question_secrète, réponse_secrète, adresse, cp, ville, région, tel, date_naij, date_naim, date_naia) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)');
$req->execute(array($_POST['nom'], $_POST['prénom'], $_POST['pseudo'], $_POST['e_mail'], $_POST['password'], $_POST['question_secrète'], $_POST['réponse_secrète'], $_POST['adresse'], $_POST['cp'], $_POST['ville'], $_POST['région'], $_POST['tel'], $_POST['date_naij'], $_POST['date_naim'], $_POST['date_naia']));
// Récupération des variables nécessaires au mail de confirmation
$e_mail = $_POST['e_mail'];
$pseudo = $_POST['pseudo'];
// Génération aléatoire d'une clé
$cle = md5(microtime(TRUE)*100000);
// Insertion de la clé dans la base de données
$stmt = $bdd->prepare("UPDATE formulaire SET cle=:cle WHERE pseudo like :pseudo");
$stmt->bindParam(':cle', $cle);
$stmt->bindParam(':pseudo', $pseudo);
$stmt->execute();
// Préparation du mail contenant le lien d'activation
$destinataire = $e_mail;
$sujet = "Activer votre compte" ;
$entete = "From: inscription@monsite.com" ;
// Le lien d'activation est composé du pseudo(pseudo) et de la clé(cle)
$message = 'Bienvenue sur Intelli-vente,
Pour activer votre compte, veuillez cliquer sur le lien ci dessous
ou copier/coller dans votre navigateur internet.
http://127.0.0.1/Site/Page2/activation.php?pseudo='.urlencode($pseudo).'&cle='.urlencode($cle).'
---------------
Ceci est un mail automatique, Merci de ne pas y répondre.';
mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail
header('Location: ../page1.php');
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
La clé est effectivement inséré comme il le faut dans la base de donnée, donc je pense que l'erreur intervient juste après...
A voir également:
- Confirmation d'inscription par mail PHP
- Wetransfer gratuit sans inscription - Guide
- Twitter inscription - Guide
- Confirmation de lecture whatsapp - Guide
- Publipostage mail - Accueil - Word
- Windows live mail - Télécharger - Mail
3 réponses
C'est bon c'est résolu, j'ai enfin trouvé.
Il fallait modifier la ligne "sendmail_from = you@yourdomain" de (php.ini) en la remplaçant par mon adresse e-mail "sendmail_from = monadresse@email.fr".
Et la tout fonctionne.
Merci quand même pour votre aide.
Il fallait modifier la ligne "sendmail_from = you@yourdomain" de (php.ini) en la remplaçant par mon adresse e-mail "sendmail_from = monadresse@email.fr".
Et la tout fonctionne.
Merci quand même pour votre aide.
Une ligne dans le message que tu veux envoyé ne doit pas dépasser les 70 caractères, donc tu doit utilisé un saut de ligne:
Juste avant:
Une autre chose concernant l'entête, ça doit être comme ça:
$message = wordwrap($message, 70);
Juste avant:
mail($destinataire, $sujet, $message, $entete) ; // Envoi du mail
Une autre chose concernant l'entête, ça doit être comme ça:
$entete = 'From: inscription@monsite.com' . "\r\n" . 'Reply-To: inscription@monsite.com' . "\r\n" . 'X-Mailer: PHP/' . phpversion();