Gestion de la fonction mail

Fermé
vladimir14k Messages postés 35 Date d'inscription mercredi 9 janvier 2019 Statut Membre Dernière intervention 14 août 2020 - Modifié le 9 janv. 2019 à 17:51
vladimir14k Messages postés 35 Date d'inscription mercredi 9 janvier 2019 Statut Membre Dernière intervention 14 août 2020 - 10 janv. 2019 à 21:54
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>";
                        }
                    }
                ?>
A voir également:

3 réponses

vladimir14k Messages postés 35 Date d'inscription mercredi 9 janvier 2019 Statut Membre Dernière intervention 14 août 2020
9 janv. 2019 à 17:50
 <?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>";
                        }
                    }
                ?>
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
9 janv. 2019 à 17:54
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
0
vladimir14k Messages postés 35 Date d'inscription mercredi 9 janvier 2019 Statut Membre Dernière intervention 14 août 2020
9 janv. 2019 à 18:24
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>";
            }
        }
?>
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
9 janv. 2019 à 18:50
Et bien mon petit...si tu commençais par appliquer TOUT ce que je t'ai indiqué....
0
vladimir14k Messages postés 35 Date d'inscription mercredi 9 janvier 2019 Statut Membre Dernière intervention 14 août 2020
10 janv. 2019 à 21:54
merci bien grand. ça donne déjà bien
0