34 Stimmen

Prüfen, ob $_POST-value leer ist

if(isset($_POST['submit'])) {
    if(!isset($_POST['userName'])) {
        $username = 'Anonymous';
    }      
    else $username = $_POST['userName'];
}

Ich kann die $username "Anonym" zu sein? Es ist entweder leer oder der Wert von $_POST['userName'] .

3voto

Amazing B Punkte 31
$username = filter_input(INPUT_POST, 'userName', FILTER_SANITIZE_STRING);
if ($username == '') {$username = 'Anonymous';}

Best Practice - immer Filter Eingaben, sanitize String ist in Ordnung, aber Sie sind besser dran mit einem benutzerdefinierten Callback-Funktion, um wirklich herauszufiltern, was nicht akzeptabel ist. Prüfen Sie dann die jetzt sichere Variable, ob sie null/leer ist, und wenn ja, setzen Sie sie auf Anonymous. Erfordert keine "else"-Anweisung, da sie gesetzt wurde, wenn sie in der ersten Zeile vorhanden war.

2voto

Tschallacka Punkte 26239

Ich würde einen einfachen einzeiligen Vergleich für diese Anwendungsfälle verwenden

$username = trim($_POST['userName'])?:'Anonymous';

Dies ist für den Anwendungsfall, dass Sie sicher sind, dass die Fehlerprotokollierung ausgeschaltet ist, damit Sie keine Warnung erhalten, dass die Variable nicht initialisiert ist.

Dies ist die paranoide Version:

$username = !empty(trim(isset($_POST['userName'])?$_POST['userName']:''))?$_POST['userName']:'Anonymous';

Damit wird eine Prüfung implementiert, ob die $_POST vor dem Zugriff auf die Variable gesetzt wird.

1voto

GoldenNewby Punkte 4322

Isset prüft, ob der Schlüssel, den Sie im Hash (oder assoziativen Array) prüfen, "gesetzt" ist oder nicht. Setzen bedeutet in diesem Zusammenhang nur, ob der Wert bekannt ist. Nichts ist ein Wert. Es ist also als leere Zeichenkette definiert.

Solange Sie ein Eingabefeld mit dem Namen userName haben, wird dies der Fall sein, unabhängig davon, ob der Benutzer es ausfüllt. Was Sie wirklich tun wollen, ist zu prüfen, ob der Benutzername gleich einer leeren Zeichenkette '' ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X