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 :

Vérification et envoi de formulaire


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Vérification et envoi de formulaire
    Bonjour à tous,

    Pas tout jeune mais grand débutant, je termine actuellement un site comportant plusieurs formulaires et, avant d'aller plus loin, j'aimerais si possible savoir ce que vous pensez de mon fichier PHP, de type "envoi universel de formulaires".

    Je n'ai pas jugé utile de pousser la vérification des champs à son maximum mais, par contre, je souhaite quand même protéger le site contre les risques de codes malins.

    J'ai testé le fonctionnement du code qui suit sur mon serveur local (Xamp/Apache) et il fonctionne. Je n'ai pas réussi par contre à améliorer la présentation du mail à la réception mais je ne désespère pas d'y arriver en cherchant davantage.

    Voilà, j'aimerais juste savoir si l'envoi de formulaire ainsi conçu ne comporte pas une faille gênante. Merci d'avance ! :)

    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
    <?php
    $monadresse = "monnom@monfai.com";
    $objet = "Formulaire contact";
    $message = "Formulaire Contact : \n";
     
    foreach ($_POST as $name => $value) {
       $message .= htmlspecialchars(stripslashes("$name: $value  |  "));
       }
     if (isset ($_POST['mail']) && $_POST['mail'] && $_POST['civilite']  && $_POST['nom']  && $_POST['prenom']  && $_POST['ville']  && $_POST['message'] != "") {
      $poster = $_POST['mail'];
     
      if (@mail($monadresse, $objet, $message, "From: $poster")) {
     
        echo "<b>Merci de votre visite sur le site !</b>\n";
        echo "<p>Votre message a bien été transmis !</p>\n";
      } else { 
        echo "<b>Désolé, votre message n'a pu être transmis ?.</b>\n";
      }
     } else {
      echo "<body><div
     style=\"text-align: center; margin-top: 20%; font-weight: bold; color: red;\"><big>SVP, veuillez renseigner tous les champs signalés par un astérisque (*).</big><br /> <br /><br />Faute de renseignements valides (adresse E-mail notamment), nous ne pourrons vous donner réponse.</span></div></body>\n";
    }
    ?>

  2. #2
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 201
    Points : 241
    Points
    241
    Par défaut
    Remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (isset ($_POST['mail']) && $_POST['mail'] && $_POST['civilite'] && $_POST['nom'] && $_POST['prenom'] && $_POST['ville'] && $_POST['message'] != "") {
    $poster = $_POST['mail'];
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if ((isset ($_POST['mail']) && ($_POST['mail']!= "") && ($_POST['civilite']!= "") && ($_POST['nom']!= "") && ($_POST['prenom']!= "") && ($_POST['ville']!= "") &&( $_POST['message'] != "")) {
    $poster = $_POST['mail'];
    Je te suggère de lire ceci:
    http://a-pellegrini.developpez.com/tutoriels/php/mail/

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci beaucoup Acirfa pour cette réponse rapide.

    Je vais tenir compte de tes conseils.

  4. #4
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Help Acirfa !

    J'ai travaillé le site que tu m'as conseillé et d'autres en plus mais je n'arrive pas à faire un truc pourtant pas compliqué apparemment.

    Voilà, mes formulaires fonctionnent avec le code ci-dessus mais je voudrais ajouter un contrôle sur le champ "mail".

    En effet, et je ne comprends pas pourquoi, les messages n'arrivent pas du tout au destinataire avec mon code actuel si l'adresse mail fournie par l'expéditeur dans le champ "mail" n'est pas conforme, bien qu'à l'envoi il soit affiché "Votre message a bien été transmis".

    J'ai essayé d'ajouter à mon code un contrôle du champ mail avec "elseif(!eregi...)" ou "$regex_mail" mais sans succès.

    Est-ce possible s'il te plait d'ajouter un tel contrôle à mon code actuel ? je n'y arrive pas.

    Merci d'avance.

  5. #5
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    L'effort est souvent récompensé ! j'ai fait comme suit et cela semble fonctionner.

    Est-ce correct ?

    Merci pour tout !

    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
    <?php
    $monadresse = "monadresse@fai.com";
    $objet = "Formulaire contact";
    $message = "Formulaire Contact : \n";
     
    foreach ($_POST as $name => $value) {
       $message .= htmlspecialchars(stripslashes("$name: $value  |  "));
       }
     if (isset ($_POST['mail']) && ($_POST['mail']!= "") && (eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$",$_POST["mail"])) && ($_POST['civilite']!= "") && ($_POST['nom']!= "") && ($_POST['prenom']!= "") && ($_POST['ville']!= "") &&( $_POST['message'] != "")) 
     { 
    $poster = $_POST['mail'];
     
      if (@mail($monadresse, $objet, $message, "From: $poster")) {
     
        echo "<b>Merci de votre visite sur le site !</b>\n";
        echo "<p>Votre message a bien été transmis !</p>\n";
      } else { 
        echo "<b>Désolé, votre message n'a pu être transmis ?.</b>\n";
      }
     } else {
      echo "<body><div
     style=\"text-align: center; margin-top: 20%; font-weight: bold; color: red;\"><big>Merci de bien vouloir <br /><br /><br /> Renseigner tous les champs signalés par un astérisque (*).<br /> <br /><br />et vous assurer d'avoir fourni une adresse E-mail valide.</big>
     </span></div></body>\n";
    }
    ?>

  6. #6
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 201
    Points : 241
    Points
    241
    Par défaut
    remplace ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (@mail($monadresse, $objet, $message, "From: $poster"))
    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if (@mail($monadresse, $objet, $message, $poster))
    c'est plus propre et un minimum de securité...

    Et tu auras mis auparavent dans $poster ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $poster = 'From : '.$_POST['mail']."\r\n";
    $poster.= 'Mime-Version: 1.0'."\r\n";
    $poste.='Content-Type: text/plain; charset=iso-8859-1'."\r\n";
    $poster.='X-Mailer: PHP/' . phpversion();
    $poster.= "\r\n";
    Apparement tout est ok.

  7. #7
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Merci Acirfa, c'est sympa. Avec un coup de main, l'informatique devient plus accessible.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 06/06/2010, 20h48
  2. IE envoie le formulaire AVANT sa vérification!
    Par _tony dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 12/08/2009, 14h27
  3. Vérification avant l'envoi de formulaire
    Par navis84 dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 10/05/2006, 14h01
  4. Probleme d'envoie de formulaire
    Par wollverine dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 02/02/2005, 16h29
  5. [HTML] Problème d'envoi de formulaire
    Par autumn319 dans le forum ASP
    Réponses: 26
    Dernier message: 03/09/2003, 10h06

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