IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Formulaire de contact sécurisé vers e-mail


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Par défaut Formulaire de contact sécurisé vers e-mail
    suite au tutoriel suivant http://a-pellegrini.developpez.com/t...s/php/mail/#L4
    j'ai voulu faire un formulaire de contact sécurisé avec un envoi d'email sur ma boite.
    Mais j'ai quelques soucis pour bien le protéger et je ne vois pas d'où cela peut venir, je m'explique :
    je n'arrive par exemple pas à envoyer le message d'erreur en cas de champs vide ou bien de champs avec des balises.Par contre, pour les erreurs d'email cela marche bien.
    Je signale que mon site est sur un espace perso chez Free. Cela joue peut être même si j'ai vu la liste des fonctions que l'on ne peut pas mettre, et qu'aucune d'entre-elles n'est présente ici.
    Merci d'avance de votre aide.

    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    <?php
                /* Récupération des valeurs des champs du formulaire */
                if (get_magic_quotes_gpc())
                {
                  $nom             = stripslashes(trim($_POST['nom']));
                  $expediteur    = stripslashes(trim($_POST['email']));
                  $sujet        = stripslashes(trim($_POST['sujet']));
                  $message        = stripslashes(trim($_POST['message']));
                }
                else
                {
                  $nom            = trim($_POST['nom']);
                  $expediteur    = trim($_POST['email']);
                  $sujet        = trim($_POST['sujet']);
                  $message        = trim($_POST['message']);
                }
     
                /* Expression régulière permettant de vérifier si le
                * format d'une adresse e-mail est correct */
                $regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
     
                /* Expression régulière permettant de vérifier qu'aucun
                * en-tête n'est inséré dans nos champs */
                $regex_head = '/[\n\r]/';
     
                /* Si le formulaire n'est pas posté de notre site on renvoie
                * vers la page d'accueil */
                if($_SERVER['HTTP_REFERER'] != 'http://www.xxx.fr/futur/contact.php')
                {
                  header('Location: http://www.xxx.fr/futur/');
                }
                /* On vérifie que tous les champs sont remplis */
                elseif (empty($nom) 
                       || empty($expediteur)
                       || empty($sujet)
                       || empty($message))
                {
                  echo "Tous les champs doivent être renseignés";
                }
                /* On vérifie que le format de l'e-mail est correct */
                elseif (!preg_match($regex_mail, $expediteur))
                {
                  echo "L'adresse email n'est pas valide";
                }
                /* On vérifie qu'il n'y a aucun header dans les champs */
                elseif (preg_match($regex_head, $expediteur)
                        || preg_match($regex_head, $nom)
                        || preg_match($regex_head, $sujet))
                {
                    echo "En-têtes interdites dans les champs du formulaire";
                }
                /* Destinataire (votre adresse e-mail) */
                $to = 'xxx@xxx.com';
     
                /* Construction du message */
                $msg  = 'Bonjour,'."\r\n\r\n";
                $msg .= 'Ce mail a été envoyé depuis mon site perso par :'.$nom."\r\n\r\n";
                $msg .= 'Voici le message :'.$sujet."\r\n";
                $msg .= '***************************'."\r\n";
                $msg .= $message."\r\n";
                $msg .= '***************************'."\r\n";
     
                /* En-têtes de l'e-mail */
                $headers = 'From: '.$nom.' <'.$expediteur.'>'."\r\n\r\n";
     
                /* Envoi de l'e-mail */
                if (mail($to, $sujet, $msg, $headers))
                {
                    echo "E-mail envoyé avec succès";
                }
                else
                {
                    echo "Erreur d'envoi de l'e-mail";
                }
    ?>

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Si tu ne rentres pas dans ta condition, vérifie ce que contiennent les variables concernées avec var_dump().
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre chevronné
    Avatar de djayp
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    295
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 295
    Par défaut
    Salut,

    Dans ta vérification il te manque le dernier else {} et du coup ton mail est envoyé dans tous les cas même s'il y a une erreur.

    A+

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 2
    Par défaut
    Merci à vous 2 pour votre rapidité (ça change de certains sites...).
    Merci aussi de me faire passer pour un âne devant tout le monde avec mon erreur de débutant enfin je l'ai bien mérité, car c'était évidemment le else{} qui manquait dans le code.
    Bonne continuation.

  5. #5
    Invité de passage
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1
    Par défaut
    Bonjour à tous et désolé de déterrer un post aussi ancien

    Je ne dispose que très faible connaissance en html/php, et je rencontre exactement le même problème que l'auteur de ce topic.

    Hors mon niveau plus que ridicule, m'empêche de comprendre comment et ou insérer ce " else{} " dans mon code

    La fin de mon code est donc identique à savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /* Envoi de l'e-mail */
                if (mail($to, $sujet, $msg, $headers))
                {
                    echo "E-mail envoyé avec succès";
                }
                else
                {
                    echo "Erreur d'envoi de l'e-mail";
                }
    ?>
    Pouvez-vous juste m'indiquer comment placer ce fameux "else{}" ?

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment créer un formulaire de contact reçu par mail sans php et mailto
    Par lilly91 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 14/10/2009, 19h12
  2. [Web Service] Envoyer formulaire de contact par mail via php
    Par ginger4957 dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 09/06/2009, 15h53
  3. Formulaire de contact "sécurisé" pour envoi de mail
    Par fcedric dans le forum Langage
    Réponses: 2
    Dernier message: 11/07/2008, 15h23
  4. [Configuration] Formulaire de contact et envoi d'e-mail
    Par platonus2002 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 07/09/2007, 10h25
  5. envoyer une image via un formulaire vers son mail
    Par cdevl32 dans le forum Langage
    Réponses: 2
    Dernier message: 02/09/2007, 20h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo