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 :

champs requis et vérification email


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut champs requis et vérification email
    Bonjour,

    J'ai un petit formulaire tout simple, sur une seule page.
    Je voudrais vérifier l'adresse mail, ainsi que mettre des champs requis, mais je n'y arrive pas.

    Voila le formulaire :

    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
     
      <?php
    if ($_POST["email"]<>'') {
        $ToEmail = 'mon@mail.fr';
        $EmailSubject = 'Formulaire de contact';
        $mailheader = "From: ".$_POST["email"]."\r\n";
        $mailheader .= "Reply-To: ".$_POST["email"]."\r\n";
        $mailheader .= "Content-type: text/html; charset=UTF-8\r\n";
        $MESSAGE_BODY = "Nom : ".$_POST["name"]."";
        $MESSAGE_BODY .= " Prénom : ".$_POST["firstname"]."";
        $MESSAGE_BODY .= " Email : ".$_POST["email"]."";
        $MESSAGE_BODY .= " Ville : ".$_POST["ville"]."";
        $MESSAGE_BODY .= " Message : ".nl2br($_POST["comment"])."";
     
        mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Désolé, une erreur est survenue...");
    ?>
    ! Votre message a bien ete envoye !
    <?php
    } else {
    ?>
    <form method=POST action=contact.php >
    <input type=hidden name=subject value=formmail>
    <table>
    <tr><td>Votre nom :</td>
        <td><input type=text name=name size=30></td></tr>
    <tr><td>Votre prénom :</td>
        <td><input type=text name=firstname size=30></td></tr>
    <tr><td>Votre ville :</td>
        <td><input type=text name=ville size=30></td></tr>
    <tr><td>Votre email :</td>
        <td><input type=text name=email size=30></td></tr>
    <tr><td colspan=2>Votre message :<br>
      <textarea COLS=50 ROWS=6 name=comment></textarea>
    </td></tr>
    </table>
    <br> <input type=submit value=Envoyer> -
         <input type=reset value=Annuler>    
    </form>
    <?php
    };
    ?>
    J'ai regardé la FAQ, mais je n'arrive pas à appliquer le code, par exemple pour vérifier le mail.
    Pour ce code par exemple, je ne sais pas comment l'inséréer :

    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
     
    <?php
    function verifMail ($mail) 
    {
    	if (preg_match ('/^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]/i', $mail ) ) {
    		return false;
    	}
    	list ($nom, $domaine) = explode ('@', $mail);
    	if (getmxrr ($domaine, $mxhosts))  {
    		return true;
    	} else {
    		return false;
    	} 
    } 
    ?>
    Y a-t-il d'autres choses à faire pour vérifier / sécuriser un formulaire comme celui-la ?

    Si quelqu'un peut me guider un peu svp ?
    Merci d'avance,
    Très cordialement,

    ANDRE Ani

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    A chaque fois que c'est possible, il est préférable d'utiliser filter_input ou filter_var() associé au filtre adéquat.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    heu... Désolé mais ça ne m'aide pas beaucoup.

    Je ne devrais pas utiliser le script de la FAQ c'est ça ?
    Et plutôt faire un truc avec filter_input ou filter_var()

    Je n'arrive déjà pas à utiliser le script, alors, en faire un moi-même pour modifier mon formulaire, c'est pas gagné.

    Lorsque j'ai essayé de l'intégrer, il s'affichait dans ma page...

  4. #4
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Bonjour,

    Les FAQ ne sont pas toutes mises à jour et celle-ci a peut-être été faite avant l'existence de ces fonctions. Par ailleurs les fonctions natives ont l'avantage d'être mises à jour avec les différentes versions de php.
    Avec filter_var cela donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $mail = 'bob@example.com';
    if(filter_var($mail, FILTER_VALIDATE_EMAIL)) 
    {
        echo 'structure du mail valide';
    }
    else
    {
        echo 'structure du mail non valide';
    }

  5. #5
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    D'accord, c'est noté.

    Merci pour votre exemple, mais je n'arrive pas à le faire fonctionner, j'ai toujours le message d'erreur sur l'email qui s'affiche.
    Alors impossible de tester également si les champs sont vides ou non...

    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
     
    <?php
    if ($_POST["email"]<>'') {
        $ToEmail = 'mon@mail.fr';
        $EmailSubject = 'Formulaire de contact';
        $mailheader = "From: ".$_POST["email"]."\r\n";
        $mailheader .= "Reply-To: ".$_POST["email"]."\r\n";
        $mailheader .= "Content-type: text/html; charset=UTF-8\r\n";
        $MESSAGE_BODY = "Nom : ".$_POST["name"]."";
        $MESSAGE_BODY .= " Prénom : ".$_POST["firstname"]."";
        $MESSAGE_BODY .= " Email : ".$_POST["email"]."";
        $MESSAGE_BODY .= " Ville : ".$_POST["ville"]."";
        $MESSAGE_BODY .= " Message : ".nl2br($_POST["comment"])."";
     
    if(filter_var($email, FILTER_VALIDATE_EMAIL)) 
    {
        echo ' ';
    }
    else
    {
        echo 'Veuillez entrer une adresse mail valide SVP ';
    }
     
    mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Désolé, une erreur est survenue...");
    ?>
    ! Votre message a bien ete envoye !
    <?php
    } else {
    ?>
    <form method=POST action=contact.php >
    <input type=hidden name=subject value=formmail>
    <table>
    <tr><td>Votre nom :</td>
        <td><input type=text name=name size=30></td></tr>
    <tr><td>Votre prénom :</td>
        <td><input type=text name=firstname size=30></td></tr>
    <tr><td>Votre ville :</td>
        <td><input type=text name=ville size=30></td></tr>
    <tr><td>Votre email :</td>
        <td><input type=text name=email size=30></td></tr>
    <tr><td colspan=2>Votre message :<br>
      <textarea COLS=50 ROWS=6 name=comment></textarea>
    </td></tr>
    </table>
    <br> <input type=submit value=Envoyer> -
         <input type=reset value=Annuler>    
    </form>
    <?php
    };
    ?>

  6. #6
    Membre éclairé Avatar de lostsoul
    Homme Profil pro
    Rédacteur web, blogueur, développeur web junior
    Inscrit en
    Novembre 2003
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Rédacteur web, blogueur, développeur web junior
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2003
    Messages : 762
    Par défaut
    Bon, en fait, il y a du mieux. En fait, il semble que je ne récupérais pas les variables si j'ai bien compris. Mais même si l'adresse mail est invalide, le message est envoyé quand même... C'est le test à la fin qui n'ai pas correct, et je ne sais pas trop comment l'arranger.
    En plus, je voudrais tester les champs vides.

    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
     
    <?php
    if(isset($_POST['name']) and isset($_POST['firstname']) and isset($_POST['email']) )
    {
    $nom = $_POST['name'];
    $prenom = $_POST['firstname'];
    $email = $_POST['email'];
     
        $ToEmail = 'mon@mail.fr';
        $EmailSubject = 'Formulaire de contact';
        $mailheader = "From: ".$_POST["email"]."\r\n";
        $mailheader .= "Reply-To: ".$_POST["email"]."\r\n";
        $mailheader .= "Content-type: text/html; charset=UTF-8\r\n";
        $MESSAGE_BODY = "Nom : ".$_POST["name"]."";
        $MESSAGE_BODY .= " Prénom : ".$_POST["firstname"]."";
        $MESSAGE_BODY .= " Email : ".$_POST["email"]."";
        $MESSAGE_BODY .= " Ville : ".$_POST["ville"]."";
        $MESSAGE_BODY .= " Message : ".nl2br($_POST["comment"])."";
     
    if(filter_var($email, FILTER_VALIDATE_EMAIL)) 
    {
        echo ' ';
    }
    else
    {
        echo 'Veuillez entrer une adresse mail valide SVP ';
    }
     
    mail($ToEmail, $EmailSubject, $MESSAGE_BODY, $mailheader) or die ("Désolé, une erreur est survenue...");
    ?>
    ! Votre message a bien ete envoye !
    <?php
    } else {
    ?>
    <form method=POST action=contact.php >
    <input type=hidden name=subject value=formmail>
    <table>
    <tr><td>Votre nom :</td>
        <td><input type=text name=name size=30></td></tr>
    <tr><td>Votre prénom :</td>
        <td><input type=text name=firstname size=30></td></tr>
    <tr><td>Votre ville :</td>
        <td><input type=text name=ville size=30></td></tr>
    <tr><td>Votre email :</td>
        <td><input type=text name=email size=30></td></tr>
    <tr><td colspan=2>Votre message :<br>
      <textarea COLS=50 ROWS=6 name=comment></textarea>
    </td></tr>
    </table>
    <br> <input type=submit value=Envoyer> -
         <input type=reset value=Annuler>    
    </form>
    <?php
    };
    ?>

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 22/06/2011, 15h39
  2. [AJAX] champs requis avec jquery
    Par mademoizel dans le forum AJAX
    Réponses: 1
    Dernier message: 17/01/2011, 11h01
  3. [ZF 1.9] Champs requis "conditionnels"
    Par Guillaume.S dans le forum Zend_Form
    Réponses: 8
    Dernier message: 16/03/2010, 09h33
  4. [AC-2007] Remplir le champs .body de mon email
    Par theBinette dans le forum VBA Access
    Réponses: 2
    Dernier message: 09/02/2010, 12h23
  5. Formulaire avec captcha et vérification email correct
    Par hersir dans le forum Zend_Form
    Réponses: 2
    Dernier message: 08/12/2009, 17h09

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