Gestion de la fonction mail
vladimir14k
Messages postés
41
Statut
Membre
-
vladimir14k Messages postés 41 Statut Membre -
vladimir14k Messages postés 41 Statut Membre -
bonjour a voue qui s, j'aimerais savoir comment je pourrait envoyer un email a tout internaute qui me laisse un message sur le site. voici mon code: je récupéré les trois variables et je les enregistre dans ma BD. ca ne sortait pas en couleur.
<?php
if(isset($_POST['envoyer'])){
$nom = htmlspecialchars($_POST['text']);
$email = htmlspecialchars($_POST['email']);
$message = htmlspecialchars($_POST['message']);
if(filter_var($email, FILTER_VALIDATE_EMAIL) !== false){
try{
$stmt = new PDO('mysql:host=localhost;dbname=bd_fodoma;charset=utf8','root','bin2hex()');
$stmt->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$requete = $stmt->prepare("INSERT INTO visiteur(nom, email, commentaire) VALUES(:nom, :email, :commentaire)");
$requete->bindParam(":nom", $nom, PDO::PARAM_STR);
$requete->bindParam(":email", $email, PDO::PARAM_STR);
$requete->bindParam(":commentaire", $message, PDO::PARAM_STR);
$requete->execute();
echo "<script type='text/javascript'>alert('Message envoyé.');</script>";
}catch(PDOException $e){
echo 'Erreur de connexion'.$e->getMessage();
exit();
}
}else{
echo "<script type='text/javascript'>alert('E-mail invalide.');</script>";
}
}
?>
3 réponses
-
<?php if(isset($_POST['envoyer'])){ $nom = htmlspecialchars($_POST['text']); $email = htmlspecialchars($_POST['email']); $message = htmlspecialchars($_POST['message']); if(filter_var($email, FILTER_VALIDATE_EMAIL) !== false){ try{ $stmt = new PDO('mysql:host=localhost;dbname=bd_fodoma;charset=utf8','root','bin2hex()'); $stmt->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $requete = $stmt->prepare("INSERT INTO visiteur(nom, email, commentaire) VALUES(:nom, :email, :commentaire)"); $requete->bindParam(":nom", $nom, PDO::PARAM_STR); $requete->bindParam(":email", $email, PDO::PARAM_STR); $requete->bindParam(":commentaire", $message, PDO::PARAM_STR); $requete->execute(); echo "<script type='text/javascript'>alert('Message envoyé.');</script>"; }catch(PDOException $e){ echo 'Erreur de connexion'.$e->getMessage(); exit(); } }else{ echo "<script type='text/javascript'>alert('E-mail invalide.');</script>"; } } ?> -
Bonjour,
Déjà... la fonction htmlspecialchar ne doit être utilisée que pour de l'affichage et en aucun cas pour stocker les données dans la bdd.
(en BDD on stocke les données "brutes" )
Ensuite, vu que tu fais du PDO, je t'invite à lire et à appliquer ce qui est indiqué ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
Et de suivre aussi les conseils concernant la rédaction de ton code ici : https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code
Concernant ta demande (envoi de mail) tu trouveras sans mal de nombreux exemples sur ce forum (et/ou sur internet en général...) sans aucune difficulté.
Soit en utilisant la fonction "mail" du serveur (https://www.commentcamarche.net/faq/117-php-fonction-mail) ... soit en utilisant la class php : phpMailer (https://github.com/PHPMailer/PHPMailer)
Je te demande également de lire ce guide concernant l'écriture du code sur le forum (j'ai édité ton message pour corriger la coloration syntaxique )
https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
-
Merci pour ta reponse mon grand. mais ca ne marche pas toujours. voici ce que je vient de modifier:
<?php if(isset($_POST['envoyer'])){ $nom = htmlspecialchars($_POST['text']); $email = htmlspecialchars($_POST['email']); $message = htmlspecialchars($_POST['message']); if(filter_var($email, FILTER_VALIDATE_EMAIL) !== false){ try{ $stmt = new PDO('mysql:host=localhost;dbname=fodomaca_bd_fodoma;charset=utf8','fodomaca_root','F#@b14K_*j8'); $stmt->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $requete = $stmt->prepare("INSERT INTO visiteur(nom, email, commentaire) VALUES(:nom, :email, :commentaire)"); $requete->bindParam(":nom", $nom, PDO::PARAM_STR); $requete->bindParam(":email", $email, PDO::PARAM_STR); $requete->bindParam(":commentaire", $message, PDO::PARAM_STR); $requete->execute(); $to = $email; $subject = 'Accuse de reception'; $message = 'Bonjour ! nous avons bien recu votre message. Merci!'; $headers = 'From: contact@fodomacameroun.org' . "\r\n" . 'Reply-To: contact@fodomacameroun.org' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); echo "<script type='text/javascript'>alert('Message envoyé.');</script>"; }catch(PDOException $e){ echo 'Erreur de connexion'.$e->getMessage(); exit(); } }else{ echo "<script type='text/javascript'>alert('E-mail invalide.');</script>"; } } ?>