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 :

contrôle de saisie


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Points : 236
    Points
    236
    Par défaut contrôle de saisie
    Bonjour. J'ai des difficultés à gérer un contrôle de saisie.
    La saisie est pleinement opérationnelle mais sans contrôle.
    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
        <form  method="post" enctype="application/x-www-form-urlencoded"
          autocomplete="on" action="correspondance.php" name="Mail"
          style="font-weight: bold;">
            <div align="center">
                <h3>Votre Message:</h3>
     
                <table align="center" width="100%";>
                <tr>
                    <td>  <label for="nom">Nom</label>
                    </td>
                    <td ><input id="nom" name="nom" type="text" value=""/>
                    </td>
                </tr>
                <tr>
                    <td ><label for="email">Votre mail</label>
                    </td>
                    <td> <input id="email" name="email" type="text" value=""/>
                    </td>    
                </tr>
                <tr>
                     <td> <label for="message">Message</label>
                     </td>
                      <td>
                          <textarea  id="message" rows="20"   name="message" >Bonjour.</textarea>
                     </td>
                      <td>
     
                     </td>
     
                </tr>
     
                </table>
           </div>            
        <button  class="button" type="submit" name="envoi">Envoi</button>
        <button  class="button" type="button" onclick="javascript:window.close()">Annuler</button>
                         <br>
        </form>

    Si je mets:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $nom    =  filter_input(INPUT_POST,$_POST['nom'],FILTER_SANITIZE_SPECIAL_CHARS);
    $email  =  filter_input(INPUT_POST,$_POST['email'],FILTER_SANITIZE_EMAIL);
    $message=  filter_input(INPUT_POST,$_POST['message'],FILTER_SANITIZE_SPECIAL_CHARS);
    Mes variables se retrouvent vides.
    Pourtant un me montre que ce n'est pas vide.

    Il se peut que filter_input renvoie NULL mais je ne vois pas pourquoi dans mon cas.
    Il y a aussi des gens qui me mettent une adresse mail dans le nom. Comment filtrer ça ?

    Vu le nombre de messages que je reçois, je me demande s'il n'y a pas un bot qui s'amuse.
    Merci de votre aide car logiquement je devrais récupérer mes variables ?

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 577
    Points : 1 989
    Points
    1 989
    Par défaut
    Bonjour,

    Mauvaise syntaxe, pas besoin d'utiliser le tableau POST puisque le paramètre INPUT_POST indique a la fonction ou allez chercher le paramètre https://secure.php.net/manual/fr/fun...lter-input.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom    =  filter_input(INPUT_POST,'nom',FILTER_SANITIZE_SPECIAL_CHARS);

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Premier point : si tu utilises filter_input, ton 2e paramètre est le nom du champ, pas la valeur du champ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom    =  filter_input(INPUT_POST, 'nom', FILTER_SANITIZE_SPECIAL_CHARS);
    Pour éviter d'avoir un email comme nom, il faut que tu ajoutes un contrôle sur ton champ (par exemple, en interdisant le caractère @), évidemment avec un affichage de l'erreur explicite.
    Tu peux éventuellement l'ajouter aussi côté client avec l'attribut pattern du HTML5.

    Pour les bots, il y a plusieurs solutions : utiliser un Captcha, une question textuelle, un champ qui doit rester vide...

  4. #4
    Membre actif
    Homme Profil pro
    électronicien
    Inscrit en
    Octobre 2006
    Messages
    225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : électronicien
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2006
    Messages : 225
    Points : 236
    Points
    236
    Par défaut
    Merci pour ces réponses explicites. Je sais maintenant utiliser ce filtre.
    Cordialement.

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

Discussions similaires

  1. Contrôle de saisie formulaire
    Par miram dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 02/02/2006, 08h33
  2. contrôle de saisie sur un espace
    Par oceane751 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 12/01/2006, 12h04
  3. contrôle de saisie menu déroulant
    Par shnouf dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 05/01/2006, 16h30
  4. contrôle de saisie
    Par oceane751 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 05/01/2006, 11h24
  5. [debutant] contrôle de saisie et formulaire
    Par oceane751 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 27/11/2005, 22h29

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