Gestion de la fonction mail

vladimir14k Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   -  
vladimir14k Messages postés 34 Date d'inscription   Statut Membre Dernière intervention   -
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 34 Date d'inscription   Statut Membre Dernière intervention  
 
 <?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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 34 Date d'inscription   Statut Membre Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Et bien mon petit...si tu commençais par appliquer TOUT ce que je t'ai indiqué....
0
vladimir14k Messages postés 34 Date d'inscription   Statut Membre Dernière intervention  
 
merci bien grand. ça donne déjà bien
0