PHP de Validation de Formulaire avec la fonction isset() de la fonction
Code de Robin Nixon livre:
<?php
if (isset($_POST['name'])) $name = $_POST['name'];
else $name = '(enter your name)';
echo <<<_END
<html>
<head>
<title>Test</title>
</head>
<body>
Your name is $name<br />
<form method = 'post' action = 'count.php'>
What's your name?
<input type='text' name='name' />
<input type='submit' />
</form>
</body>
</html>
_END
?>
Dans la deuxième ligne, nous vérifions est variable définie ou pas avec isset()
. Dans la troisième ligne, nous avons une condition: si elle n'est pas définie, le script prints "entrez votre nom". C'est ce que je ne comprends pas: j'ai ouvert cette page - elle imprime:
Votre nom (Entrez votre nom) Quel est votre nom? (et le formulaire de soumission)
N'entrez rien du tout, puis cliquez sur "envoyer" - elle imprime:
Votre nom est (et n'est PAS imprimé "Entrez votre nom") Quel est votre nom? (et le formulaire de soumission)
Je n'ai pas entrer quoi que ce soit mais la fonction a dit que la variable a été définie sur une valeur autre que NULL
. Pourquoi? Si il passe à une valeur vide, alors pourquoi l'utiliser? Pourquoi ne pas utiliser empty
? Mais dans tous les programmes je vois solution de ce genre. Pourquoi devons-nous utiliser isset()
fonction? Que n'ai-je pas compris?
var_dump($_POST['name'])
va vous montrer que c'est un string(0)
(vide/chaîne de longueur nulle). TOUTES les valeurs sortant de _GET/_POST sont des chaînes de caractères, indépendamment de leur contenu réel.double possible de Pourquoi vérifier à la fois la fonction isset() et !empty()
OriginalL'auteur 9Algorithm | 2012-11-19
Vous devez vous connecter pour publier un commentaire.
La
isset
fonction est utilisée pour vérifier si le champ texte<input type='text' name='name' />
a toutes les données soumises parPOST
qui est capturée dans$_POST['name']
.Lorsque vous soumettez le formulaire, le
$_POST['name']
est vide, ou une chaîne vide. Donc, vous voyezYour name is What's your name? (and the submission form)
, commeisset
évalué àtrue
pour une chaîne vide.Si vous voulez vérifier la vacuité du champ texte, vous devez utiliser
empty()
fonction qui vérifie à la foisisset
et bien, comme si le champ est vide/vide.OriginalL'auteur Teena Thomas
changement isset !vide. Vous êtes de la récupération d'une chaîne vide à partir de la variable post.
OU, pour être plus concis:
OriginalL'auteur Jon Hulka
C'est parce que une chaîne vide (qui est envoyée par le navigateur vers le serveur) est considéré comme une valeur valide à cause d'une variable à être "ensemble", afin
isset()
retourne true.Vous voulez vérifier
empty()
au lieu de cela, si vous voulez vous assurer que tout ce qui a été entré.OriginalL'auteur Madara Uchiha
Assurez-vous que le formulaire est déjà soumis par l'ajout d'un nom pour le bouton soumettre et de le tester en premier. Comme ceci:
if ($_SERVER["REQUEST_METHOD"] == 'POST')
que pour vérifier la présence ou l'absnce d'un champ.OriginalL'auteur Felipe Alameda A
Que tout le monde l'a dit,
empty()
pourrait fonctionner, mais votre question est: pourquoi isset au lieu de vide.Vide retourne TRUE, pour tout ce qui est évaluée comme FAUSSE, comme 0, 0.0, "0", cela pourrait conduire à des conséquences inattendues.
Pour être complet, vous devriez probablement vérifier d'abord si elle est définie, et puis si elle est vide, et d'agir en conséquence.
Je pense que beaucoup de programmeurs PHP aussi prendre l'habitude de à l'aide de la fonction isset() pour vérifier si la clé existe dans un tableau, afin de l'utiliser isset vient naturellement.
Vous remarquerez que dans un autre exemple dans ce chapitre, Nixon a des cas particuliers à gérer les chaînes vides.
0
ou un seul espace de travail seraient considérés comme "vides", mais pourrait facilement être mal.Ack, a accidentellement appuyé sur "Entrée" lorsque vous avez noté que (d'où la fuite q). Je voulais expliquer la différence entre isset et vide un peu, ainsi que pour expliquer pourquoi beaucoup de gens prennent l'habitude d'utiliser isset
OriginalL'auteur ernie