Menu

Gestion de la fonction mail

Messages postés
7
Date d'inscription
mercredi 9 janvier 2019
Dernière intervention
13 janvier 2019
-
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>";
                        }
                    }
                ?>
Afficher la suite 

Votre réponse

3 réponses

Messages postés
7
Date d'inscription
mercredi 9 janvier 2019
Dernière intervention
13 janvier 2019
0
Merci
 <?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>";
                        }
                    }
                ?>
Commenter la réponse de vladimir14k
Messages postés
24074
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 janvier 2019
2143
0
Merci
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 :
http://www.commentcamarche.net/faq/46512-pdo-gerer-les-erreurs

Et de suivre aussi les conseils concernant la rédaction de ton code ici : http://www.commentcamarche.net/faq/48399-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-les-balises-de-code
Commenter la réponse de jordane45
Messages postés
7
Date d'inscription
mercredi 9 janvier 2019
Dernière intervention
13 janvier 2019
0
Merci
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>";
            }
        }
?>
jordane45
Messages postés
24074
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 janvier 2019
2143 -
Et bien mon petit...si tu commençais par appliquer TOUT ce que je t'ai indiqué....
vladimir14k
Messages postés
7
Date d'inscription
mercredi 9 janvier 2019
Dernière intervention
13 janvier 2019
-
merci bien grand. ça donne déjà bien
Commenter la réponse de vladimir14k