dedlfix: Auf existenz überprüfen Get Variable ?

Beitrag lesen

Hi!

Achtung: Wenn es den Index gibt, z.B. $_GET['vorname'], kann es immernoch sein, dass der String leer ist! Hierzu bediene Dich der Frunktion strlen().

Wenn es ein Leerstring ist, dann ist es ein Leerstring. Den muss man nicht durch einen Leerstring ersetzen.

Beispiel zweier solcher if() Abfragen in einer Zeile:
$ref = (isset($_GET['ref'])) ? (strlen($_GET['ref'])) ? $_GET['ref'] : 'noref' : '';

Abgesehen davon, dass der Trinitätsoperator keine if-Abfrage ist, gibt es die Funktion empty(), die wie isset() keine Notice-Meldung wirft, wenn sie mit nicht vorhandenem gefüttert wird.

$ref = empty($_GET['ref']) ? 'noref' : $_GET['ref'];

Weiterhin muss der Bedingungsausdruck nicht unbedingt geklammert werden. Klammern verdeutlichen zwar gelegentlich was gemeint ist, doch sollte man sie nur bei mehrteiligen Ausdrücken verwenden. Einteilige Ausdrücke zu klammern verringert nach meinem Dafürhalten die Lesbarkeit, besonders wenn im Ausdruck selbst auch noch Klammern auftauchen.

Dein Beispiel sieht irgenwie seltsam aus. Wenn der GET-Parameter nicht vorhanden ist, gibst du einen Leerstring zurück, ist er aber vorhanden, jedoch "wertlos", gibst du ein noref zurück. Mein empty()-Beispiel setzt Nichtvorhandensein und Leerstring gleich (allerdings auch "0").

Lo!