J'ai un formulaire sur une page qui se soumet à une autre page. Là, il vérifie si le courrier d'entrée est rempli. Si c'est le cas, faites quelque chose et s'il n'est pas rempli, faites autre chose. Je ne comprends pas pourquoi il dit toujours qu'il est défini, même si j'envoie un formulaire vide. Qu'est-ce qui manque ou qui ne va pas?
step2.php:
<form name="new user" method="post" action="step2_check.php">
<input type="text" name="mail"/> <br />
<input type="password" name="password"/><br />
<input type="submit" value="continue"/>
</form>
step2_check:
if (isset($_POST["mail"])) {
echo "Yes, mail is set";
} else {
echo "N0, mail is not set";
}
Réponses:
La plupart des entrées de formulaire sont toujours définies, même si elles ne sont pas remplies, vous devez donc également vérifier le vide.
Comme il
!empty()
vérifie déjà les deux, vous pouvez utiliser ceci:la source
!
opérateur dans des cas comme celui-ci (plus facile à lire, moins de risques d'erreur, etc.) et d'inverser la logique ...if (empty()) {/* No */} else {/* Yes */}
Utilisez à la
!empty
place deisset
. isset retourne true pour$_POST
car le$_POST
tableau est superglobal et existe toujours (défini).Ou mieux utiliser
$_SERVER['REQUEST_METHOD'] == 'POST'
la source
isset
et!empty
pour éviter les erreurs. EDIT: Oups, il apprend apparemment tous les jours alors Réf$_SERVER['REQUEST_METHOD']
s'assure que l'utilisateur a soumis le formulaire.$_POST
peut être vide même dans ce cas. Considérez ce formulaire<form method="post"></form>
:, le soumettre n'enverra rien à l'action, mais le type de demande serapost
. Ou il peut être fait avec boucle:curl -X POST http://example.com/processor.php
. Si le processeur contient du code commeecho $_SERVER['REQUEST_METHOD']. ' '.var_export(empty($_POST),1);
, vous verrezPOST true
Depuis php.net , isset
l'espace vide est considéré comme un ensemble. Vous devez utiliser empty () pour vérifier toutes les options nulles.
la source
Si vous envoyez le formulaire vide, $ _POST ['mail'] sera toujours envoyé, mais la valeur est vide. Pour vérifier si le champ est vide, vous devez vérifier
la source
Ajoutez l'attribut suivant au formulaire de saisie de texte:
required="required"
. Si le formulaire n'est pas rempli, il ne permettra pas à l'utilisateur de soumettre le formulaire.Votre nouveau code sera:
la source
Vous pouvez simplement utiliser:
Sinon, utilisez empty ()
la source
@
, à savoir:@$_POST['username']
. Merci d'avoir remarqué cela.Utilisez à la
!empty()
place deisset()
. Parce queisset()
cela reviendra toujours vrai dans votre cas.la source
Peut-être que vous pouvez essayer celui-ci:
la source
la source
Pensons qu'il s'agit de votre formulaire HTML à l'étape2.php
Je pense que vous en avez besoin pour votre base de données, vous pouvez donc attribuer la valeur de votre formulaire HTML à la variable php, maintenant vous pouvez utiliser Real Escape String et ci-dessous doit être votre
Où $ db est votre connexion à la base de données.
la source
Vérifiez si le FORMULAIRE a été soumis en premier, puis le champ. Vous devez également désinfecter le terrain pour éviter les pirates.
step2_check:
la source
Pour répondre à la question posée: définir et vider ensemble donne trois conditions. Cela peut également être utilisé par Javascript avec une commande ajax.
la source
Vous pouvez essayer ceci:
la source
la source
Tu peux essayer,
la source