Gestion de la fonction mail

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

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