par
Herodote » 19 mars 2014, 20:37
Bonjour à tous.
J'ai un problème avec la fonction mail : je ne comprend pas comment elle fonctionne et donc je n'arrive pas à l'utiliser.
J'essaye d'envoyer un mail qui envoie un nouveau mot de passe si le membre l'a oublié, mais vous l'aurez deviné, ça n'envoie aucun mail.
Voici mon code :
<div class="form_forget_pass">
<form method="post" action="./forgetmdp.php">
Votre adresse mail :
<input type="email" name="email" />
<input type="submit" value="Envoyez moi un mail"/>
</form>
<?php
// Génération d'une chaine aléatoire
function chaine_aleatoire($nb_car, $chaine = 'azertyuiopqsdfghjklmwxcvbn123456789')
{
$nb_lettres = strlen($chaine) - 1;
$generation = '';
for($i=0; $i < $nb_car; $i++)
{
$pos = mt_rand(0, $nb_lettres);
$car = $chaine[$pos];
$generation .= $car;
}
return $generation;
}
if (isset ($_POST['email']))
{
$email = htmlspecialchars($_POST['email']);
$query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_email =:email');
$query->bindValue(':email',$email, PDO::PARAM_STR);
$query->execute();
$mail_no_exist=($query->fetchColumn()==0)?1:0;
$query->CloseCursor();
if(!$mail_no_exist)
{
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $email))
{
$passage_ligne = "\r\n";
}
else
{
$passage_ligne = "\n";
}
$message_html = "<html><head></head><body><b>Salut</b>, vous avez demandé un nouveau mot de passe</body></html>";
//==========
//=====Création de la boundary
$boundary = "-----=".md5(rand());
//==========
//=====Définition du sujet.
$sujet = "Nouveau mot de passe";
//=========
//=====Création du header de l'e-mail.
$header = "From: \"Admin \"<monadressemail>".$passage_ligne;
$header.= "Reply-to: \"".$email."\" <".$email.">".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========
//=====Ajout du message au format HTML
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========
//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
//==========
}
else
{
echo'Votre adresse mail n\'existe pas.';
}
}
?>
Déjà je ne renseigne pas le mot de passe de la boite mail, j'imagine que c'est pas normal, mais je n'ai pas trouvé où le mettre.
Sinon voyez vous d'autres erreurs?
Merci d'avance à ceux qui m'aideront !
Bonjour à tous.
J'ai un problème avec la fonction mail : je ne comprend pas comment elle fonctionne et donc je n'arrive pas à l'utiliser.
J'essaye d'envoyer un mail qui envoie un nouveau mot de passe si le membre l'a oublié, mais vous l'aurez deviné, ça n'envoie aucun mail. :roll:
Voici mon code :
[php]
<div class="form_forget_pass">
<form method="post" action="./forgetmdp.php">
Votre adresse mail :
<input type="email" name="email" />
<input type="submit" value="Envoyez moi un mail"/>
</form>
<?php
// Génération d'une chaine aléatoire
function chaine_aleatoire($nb_car, $chaine = 'azertyuiopqsdfghjklmwxcvbn123456789')
{
$nb_lettres = strlen($chaine) - 1;
$generation = '';
for($i=0; $i < $nb_car; $i++)
{
$pos = mt_rand(0, $nb_lettres);
$car = $chaine[$pos];
$generation .= $car;
}
return $generation;
}
if (isset ($_POST['email']))
{
$email = htmlspecialchars($_POST['email']);
$query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_email =:email');
$query->bindValue(':email',$email, PDO::PARAM_STR);
$query->execute();
$mail_no_exist=($query->fetchColumn()==0)?1:0;
$query->CloseCursor();
if(!$mail_no_exist)
{
if (!preg_match("#^[a-z0-9._-]+@(hotmail|live|msn).[a-z]{2,4}$#", $email))
{
$passage_ligne = "\r\n";
}
else
{
$passage_ligne = "\n";
}
$message_html = "<html><head></head><body><b>Salut</b>, vous avez demandé un nouveau mot de passe</body></html>";
//==========
//=====Création de la boundary
$boundary = "-----=".md5(rand());
//==========
//=====Définition du sujet.
$sujet = "Nouveau mot de passe";
//=========
//=====Création du header de l'e-mail.
$header = "From: \"Admin \"<monadressemail>".$passage_ligne;
$header.= "Reply-to: \"".$email."\" <".$email.">".$passage_ligne;
$header.= "MIME-Version: 1.0".$passage_ligne;
$header.= "Content-Type: multipart/alternative;".$passage_ligne." boundary=\"$boundary\"".$passage_ligne;
//==========
//=====Ajout du message au format HTML
$message.= "Content-Type: text/html; charset=\"ISO-8859-1\"".$passage_ligne;
$message.= "Content-Transfer-Encoding: 8bit".$passage_ligne;
$message.= $passage_ligne.$message_html.$passage_ligne;
//==========
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
$message.= $passage_ligne."--".$boundary."--".$passage_ligne;
//==========
//=====Envoi de l'e-mail.
mail($mail,$sujet,$message,$header);
//==========
}
else
{
echo'Votre adresse mail n\'existe pas.';
}
}
?>[/php]
Déjà je ne renseigne pas le mot de passe de la boite mail, j'imagine que c'est pas normal, mais je n'ai pas trouvé où le mettre.
Sinon voyez vous d'autres erreurs?
Merci d'avance à ceux qui m'aideront !