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:
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.
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'] != "")
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
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é.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Postez votre code et vos msg d'erreurs - "ça marche pas" n'est pas un message d'erreur ...