2015-07-03 15 views
6

Ich habe ein Kontaktformular, das ein verstecktes Feld (Beruf) hat. Ich versuche, das Skript zu überprüfen, um sicherzustellen, dass dieses versteckte Feld leer ist und wenn ja, dann sende das Formular Ergebnis an mich. Wenn dieses Feld jedoch NICHT leer ist, wird das Formular nicht an mich gesendet.php leeres Feld erforderlich

Orginially mein Code war:

if(isset($_POST['profession']) && $_POST['profession'] == ''){ 

Aber ich glaube, das ist eigentlich falsch und zwingt den Beruf Feld leer zu sein? Deshalb glaube ich, der Code sollte einfach sein:

if(!isset($_POST['profession'])){ 

Habe ich diese richtig bekam. Was wäre der beste Weg, dies zu kodieren?

+0

erste ist richtig. was ist das Problem? –

+1

oder Sie können einfach tun, wenn (leer ($ _ POST ['Beruf'])). Dies überprüft: - isset - ist null - ist '' –

Antwort

4

Schön, Sie mit der Honeypot-Methode der Spam-Prävention zu sehen. Das Beste, was Sie wahrscheinlich tun können, ist einfach:

if (empty($_POST['profession'])){ 
    // Send form result. 
} 

Die empty() Funktion true auswertet, wenn es eine leere Zeichenfolge ('') oder wenn die Variable oder Array-Element gar nicht existieren. Für weitere Details zu Vergleichen siehe hier: http://php.net/manual/en/types.comparisons.php

+0

Also zur Vereinfachung würden Sie diese Methode über die beiden Skriptoptionen in meinem Beispiel empfehlen. Würden sie alle als Anant arbeiten? Kumar Singh bestimmt, dass mein erster Code auch korrekt ist? –

+0

Nicht der Einfachheit halber. Anants Aussage ist ziemlich bedeutungslos; Sie sind tatsächlich richtig in Ihrer Frage, indem sie nur eine leere Zeichenfolge ('''') akzeptiert. Es ist besser, keine Annahmen darüber zu treffen, was der Browser für ein leeres Formularelement sendet, so dass 'empty()' alle Möglichkeiten der "Leere" abdeckt. – aross

+0

Danke aross - und gut erklärt! –

Verwandte Themen