Ich habe ein Formular auf einer Seite, das an eine andere Seite gesendet wird. Dort wird geprüft, ob die Eingabemail gefüllt ist. Wenn ja, dann tun Sie etwas und wenn es nicht gefüllt ist, tun Sie etwas anderes. Ich verstehe nicht, warum immer gesagt wird, dass es gesetzt ist, auch wenn ich ein leeres Formular sende. Was fehlt oder ist falsch?
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";
}
Antworten:
Die meisten Formulareingaben werden immer festgelegt, auch wenn sie nicht ausgefüllt sind. Sie müssen daher auch die Leere überprüfen.
Da
!empty()
bereits für beide geprüft wird, können Sie Folgendes verwenden:quelle
!
Operator in solchen Fällen zu meiden (leichter zu lesen, weniger Fehlerwahrscheinlichkeit usw.) und die Logik umzukehren ...if (empty()) {/* No */} else {/* Yes */}
Verwenden Sie
!empty
anstelle vonisset
. isset gibt true zurück,$_POST
da das$_POST
Array superglobal ist und immer existiert (gesetzt).Oder besser nutzen
$_SERVER['REQUEST_METHOD'] == 'POST'
quelle
isset
und!empty
Fehler vermeiden. EDIT: Hoppla, es lernt anscheinend jeden Tag dann Ref$_SERVER['REQUEST_METHOD']
stellt sicher, dass der Benutzer das Formular gesendet hat.$_POST
kann auch in diesem Fall leer sein. Betrachten Sie dieses Formular: Wenn<form method="post"></form>
Sie es senden, wird nichts an die Aktion gesendet, der Anforderungstyp jedochpost
. Oder es kann mit Locken gemacht werden :curl -X POST http://example.com/processor.php
. Wenn der Prozessor Code wie enthältecho $_SERVER['REQUEST_METHOD']. ' '.var_export(empty($_POST),1);
, werden Sie sehenPOST true
Von php.net , isset
leerer Raum wird als gesetzt betrachtet. Sie müssen empty () verwenden, um alle Nulloptionen zu überprüfen.
quelle
Wenn Sie das Formular leer senden, wird $ _POST ['mail'] weiterhin gesendet, der Wert ist jedoch leer. Um zu überprüfen, ob das Feld leer ist, müssen Sie überprüfen
quelle
Fügen Sie dem Eingabetextformular das folgende Attribut hinzu :
required="required"
. Wenn das Formular nicht ausgefüllt ist, kann der Benutzer das Formular nicht senden.Ihr neuer Code lautet:
quelle
Sie können einfach verwenden:
Alternativ können Sie empty () verwenden.
quelle
@
, dh :@$_POST['username']
. Vielen Dank, dass Sie das bemerkt haben.Verwenden Sie
!empty()
anstelle vonisset()
. Dennisset()
in Ihrem Fall wird immer true zurückgegeben.quelle
Vielleicht können Sie dieses versuchen:
quelle
quelle
Denken wir, dies ist Ihr HTML-Formular in step2.php
Ich denke, Sie brauchen es für Ihre Datenbank, damit Sie Ihren HTML-Formularwert der PHP-Variablen zuweisen können. Jetzt können Sie Real Escape String verwenden und unten muss Ihr sein
Wobei $ db Ihre Datenbankverbindung ist.
quelle
Überprüfen Sie, ob das FORMULAR zuerst übermittelt wurde und dann das Feld. Sie sollten das Feld auch bereinigen, um Hacker zu verhindern.
step2_check:
quelle
Um die gestellte Frage zu beantworten: isset und empty zusammen ergeben drei Bedingungen. Dies kann von Javascript auch mit einem Ajax-Befehl verwendet werden.
quelle
Sie können dies versuchen:
quelle
quelle
Du kannst es versuchen,
quelle