Tach!
$Hauptmenue = 0;
if (isset ($_GET['Hauptmenue']) && preg_match ("/^d{1,2}$/", $_GET['Hauptmenue']))
{
$Hauptmenue = $_GET['Hauptmenue'];
}
> Hier könnte man dann noch die Inkonsistenz des Datentyps beseitigen, denn entweder steht in `$Hauptmenue`{:.language-php} eine Zahl (0) oder eine Zeichenkette mit dem Wert von `$_GET['Hauptmenue']`{:.language-php}
Macht ja nichts, das ist PHP, da muss der Typ nicht unbedingt stimmen. Die Zahl wird sicher über einen Link oder ein Formular ins $\_GET gelangen, was heißt, dass sie als String irgendwo im HTML- oder Javascript-Code stehen muss. Eine Umwandlung nach Integer bringt an dieser Stelle keinen Vorteil.
> Also falls der Wert von $Hauptmenue immer eine Zahl sein soll:
> ` $Hauptmenue = intval($_GET['Hauptmenue']);`{:.language-php}
> Hiermit fängt man auch gleich invalide Werte ab (z.B. wenn jemand Dinge wie
> .../Index.php?Hauptmenue=Hallo
> übergibt),
Kann ja nicht, weil der RegExp das nicht durchlassen würde.
> denn intval() gibt bei ungültigen Werten 0 zurück, was hier praktischerweise genau der Vorgabe für `$Hauptmenue`{:.language-php} entspricht.
> Das einzige, was dann noch zu testen wäre, ist der Bereichsgültigkeit der Zahl, denn ich vermute, daß
> .../Index.php?Hauptmenue=36262822
> oder
> .../Index.php?Hauptmenue=-4711
> tendenziell eher nicht gewünscht sind ;)
Fängt ja auch der Rexexp ab. Aber man kann den alternativ auch weglassen und stattdessen intval() und eine Prüfung auf > 0 und < 100 nehmen.
dedlfix.