Heim  >  Artikel  >  Backend-Entwicklung  >  Warum gibt `isset($_POST["mail"])` auch bei leerer Formulareingabe immer True zurück?

Warum gibt `isset($_POST["mail"])` auch bei leerer Formulareingabe immer True zurück?

Linda Hamilton
Linda HamiltonOriginal
2024-11-09 03:53:02286Durchsuche

Why Does `isset($_POST[

Verstehen des „isset $_POST“-Verhaltens für die Validierung von Formulareingaben

Bei der Verwendung von Formularen in der Webentwicklung ist es wichtig, Benutzereingaben zu validieren Gewährleistung der Datenintegrität. Ein häufiges Szenario besteht darin, vor dem Fortfahren zu prüfen, ob ein Eingabefeld, beispielsweise eine E-Mail-Adresse, ausgefüllt ist.

Im gegebenen Szenario steht der Entwickler vor einem Problem, bei dem der Validierungsmechanismus ständig „Ja, E-Mail ist“ zurückgibt set“ auch dann, wenn der Benutzer ein leeres Formular absendet. Um zu verstehen, warum dies geschieht, schauen wir uns das Verhalten von isset($_POST["mail"]) genauer an.

Was macht isset($_POST["mail"])?

Die Funktion isset() in PHP prüft, ob eine angegebene Variable gesetzt ist, also ihr ein Wert zugewiesen wurde, auch wenn dieser Wert leer ist. Im Falle einer Formularübermittlung stellt $_POST["mail"] den Wert dar, der in das Eingabefeld mit dem Namen „mail“ eingegeben wird.

Warum ist es immer gesetzt?

Die meisten Formulareingaben, auch Texteingabefelder, sind immer gesetzt, unabhängig davon, ob sie leer sind oder nicht. Dies liegt daran, dass beim Absenden des Formulars alle seine Eingaben, auch leere, im superglobalen Array $_POST enthalten sind.

Korrektur der Validierung

Zur genauen Validierung Wenn die Eingabe leer ist, sollten Sie den Operator !empty() verwenden. Der Operator !empty() gibt „true“ zurück, wenn die Variable nicht leer ist, einschließlich nicht leerer Zeichenfolgen und Zahlen ungleich Null.

Daher wäre der geänderte Validierungscode:

if (!empty($_POST["mail"])) {
    echo "Yes, mail is set";    
} else {  
    echo "No, mail is not set";
}

Diese Korrektur stellt sicher, dass die Meldung „Mail ist gesetzt“ nur angezeigt wird, wenn das Eingabefeld einen nicht leeren Wert enthält.

Das obige ist der detaillierte Inhalt vonWarum gibt `isset($_POST["mail"])` auch bei leerer Formulareingabe immer True zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn