Si isset $_POST
J'ai un formulaire sur une page qui envoie vers une autre page. Là, il vérifie si l'entrée de messagerie est rempli. Si oui, alors faire quelque chose et si elle n'est pas remplie, faites autre chose. Je ne comprends pas pourquoi il dit toujours qu'il est défini, même si j'envoie un formulaire vide. Ce qui est manquant ou erroné?
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";
}
- Tout le texte-comme les entrées et les textareas présent dans votre formulaire sera transmis au serveur, même si leurs valeurs sont des chaînes vides.
Vous devez vous connecter pour publier un commentaire.
La plupart des entrées d'un formulaire sont toujours ensemble, même si il n'est pas rempli, alors vous devez vérifier la vacuité trop.
Depuis
!empty()
est déjà vérifie à la fois, vous pouvez utiliser ceci:!
opérateur dans de tels cas (plus facile à lire, moins de chance d'erreur, etc.) et d'inverser la logique...if (empty()) {/* No */} else {/* Yes */}
Utilisation
!empty
au lieu deisset
.isset renvoie true pour
$_POST
parce que$_POST
tableau est superglobale et existe toujours (set).Ou une meilleure utilisation
$_SERVER['REQUEST_METHOD'] == 'POST'
isset
et!empty
d'éviter les erreurs. EDIT: Oups, il n'a apparemment d'Apprentissage de tous les jours, alors Refempty
supprime les erreurs$_SERVER['REQUEST_METHOD']
assure utilisateur a soumis le formulaire.$_POST
peut être vide, même dans ce cas. Considérer cette forme:<form method="post"></form>
, de présenter enverra rien à l'action, mais le type de demande serapost
. Ou il peut être fait avec curl:curl -X POST http://example.com/processor.php
. Si le processeur contient un code commeecho $_SERVER['REQUEST_METHOD']. ' '.var_export(empty($_POST),1);
, vous verrezPOST true
À partir de php.net, isset
vide de l'espace est considéré comme ensemble. Vous avez besoin d'utiliser empty() pour vérifier tous les null options.
Si vous envoyez le formulaire vide, $_POST['mail'] sera envoyé, mais la valeur est vide. Pour vérifier si le champ est vide, vous devez vérifier
Ajouter l'attribut suivant à la saisie de texte:
required="required"
.Si le formulaire n'est pas rempli, il ne permettra pas à l'utilisateur d'envoyer le formulaire.
Votre nouveau code sera:
Vous pouvez simplement utiliser:
Vous pouvez également utiliser empty()
@
,j'.e:@$_POST['username']
. Merci d'avoir remarqué ça.Utilisation
!empty()
au lieu deisset()
. Parce queisset()
retourne toujours vrai dans votre cas.Peut-être vous pouvez essayer celui-ci:
Pour répondre à la question posée: isset et empty ensemble donne trois conditions. Il peut être utilisé par Javascript avec ajax commande ainsi.
Vous pouvez essayer ceci:
Vous pouvez essayer,
Permet de Penser que c'est votre Formulaire HTML step2.php
Je pense que vous en avez besoin pour votre base de données, de sorte que vous pouvez affecter votre Formulaire HTML de la Valeur de la Variable php, vous pouvez maintenant utiliser de Vrais Chaîne d'Échappement et ci-dessous doit être votre
Où $db est votre Connexion de Base de données.
Vérifier pour voir si le FORMULAIRE a été soumis en premier, puis le champ. Vous devriez également d'assainir le terrain pour empêcher les pirates.
step2_check: