Partage
  • Partager sur Facebook
  • Partager sur Twitter

Affectation par défaut d'un input en HTML

    11 février 2020 à 9:14:55

    Bonjour à tous !

    Je viens à vous suite à une petite constatation que j'ai fait dans mon coin, et n'étant absolument pas expert en la matière, j'espère pouvoir trouver une réponse !

    J'ai créé sur ma page HTML un formulaire comme suit: 

    	<section id="formpro">
    	<form action="mail.php" method="post">
        <div>
            <label for="name">Nom :</label>
            <input type="text" id="name" name="user_name" required/>
        </div>
        <div>
            <label for="compagnie">Entreprise :</label>
            <input type="text" id="compagnie" name="user_compagnie" required/>
        </div>
        <div>
            <label for="mail">E-mail :</label>
            <input type="email" id="mail" name="user_mail" required/>
        </div>
        <div>
            <label for="objet">Objet :</label>
            <input type="text" id="objet" name="user_objet" required/>
        </div>
        <div>
            <label for="msg">Message :</label>
            <textarea id="msg" name="user_message" required></textarea>
        </div>
        
        <div class="button">
            <input type="submit" value="Envoyer le message" />
        </div>

    Jusque là, pas trop de problèmes, c'est après que ça se complique...
    Afin de protéger l'obligation de mes champs, j'ai créé dans ma page javascript une condition avec isset sur tous mes champs...

    if(isset($_POST['user_objet']) and isset($_POST['user_name']) and isset($_POST['user_compagnie']) and isset($_POST['user_message']) and isset($_POST['user_mail']))

    Et là, grosse surprise, le message s'envoie malgré tout !
    Intrigué, je me suis penché sur le sujet, notamment en rajoutant dans ma condition de test

    and $_POST['user_message']!=""

    Et là, le champ se comporte comme je le veux.
    Je suppose donc que tous les champs de type String prennent par défaut la valeur d'une chaine vide...

    Mes questions sont: 

    - Est-ce systématiquement le cas, ou cela dépend-il de différents facteurs, tel que le navigateur utilisé par exemple ?

    - N'ayant dans mon formulaire que des champs text, le isset est-il nécessaire ? (cette réponse dépendra de la précédente)

    Je n'ai encore jamais touché au php, je découvre dans le cadre d'un projet de site web, alors je voudrais au moins bien faire la chose.

    Merci à tous pour vos réponses !

    -
    Edité par Azekia 11 février 2020 à 9:16:12

    • Partager sur Facebook
    • Partager sur Twitter
      11 février 2020 à 9:38:06

      Bonjour,

      Le isset vérifie qu'une variable existe (qu'elle soit False, Chaine vide ou 0), mais pas null

      Elle renverra true si elle existe, sinon false

      Le empty vérifie qu'une variable est vide (Chaine vide, 0, false ou null),

      Elle renvoie false si une valeur est non null ou non vide

      De toute façon, la vérification niveau backend se fera uniquement si l'utilisateur a désactiver le js, ce qui est rare de nos jours : je ne dis pas qu'il ne faut pas, mais au contraire, il faut une vérification back et front

      En conclusion, pour des entrée depuis un formulaire type text, il est mieux de faire un !empty (ce qui remplace ton $_POST['var'] != "")

      Voir sur la doc la considération des valeurs :

      https://www.php.net/manual/fr/function.empty.php

      https://www.php.net/manual/fr/function.isset.php


      Si par exemple tu souhaites recevoir depuis ton formulaire une valeur de type integer, qui peut avoir la valeur 0, alors tu ne pourras pas utiliser empty puisque elle considère que 0 est une valeur vide, pour cela tu pourra donc combiner deux conditions du style :

      if(isset($_POST['mavar']) && $_POST['mavar'] != '')
      {
        // mavar existe
        // elle peut contenir 0
        // elle ne peut pas être une chaîne vide
      }

      -
      Edité par Mehddii 11 février 2020 à 9:46:25

      • Partager sur Facebook
      • Partager sur Twitter

      Postez votre code et vos msg d'erreurs - "ça marche pas" n'est pas un message d'erreur ...

      Affectation par défaut d'un input en HTML

      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
      • Editeur
      • Markdown