Enrico: preg_match liefert kein positives Ergebnis

Beitrag lesen

Guten Abend,

ich versuche, die Seitenaufrufe unserer Homepage vor Manipulationen zu schützen und willkürliche Eingaben in der Adressleiste des Browsers durch Prüfung über reguläre Ausdrücke zu unterbinden.

Hierzu habe ich folgenden Code:

  
$Seiten = array ('/^Template.php?Auswahl=Home$/',  
                 '/^Template.php?Auswahl=Home?Aktion=Lesen&Seite=[19]{1,}$/',  
                 '/^Template.php?Auswahl=Home?Aktion=Eintragen$/',  
                 '/^ ... $/',  
                 ...);  
  
$Query_String = 'Template.php?' . $_SERVER ['QUERY_STRING'];  
  
$Erlaubnis = false;  
$i = 0;  
$j = count ($Seiten);  
  
while ($i < $j)  
{  
   if (preg_match ($Query_String, $Seiten [$i]) === true)  
   {  
      $Erlaubnis = true;  
  
      break;  
   }  
  
   $i++;  
}  
  
if (! $Erlaubnis)  
{  
   echo "Unerlaubter Zugriff!";  
}  

Das Flag $Ergebnis wird aber nie auf true gesetzt.

Das verstehe ich insofern nicht, als dass ich folgende Ausgabe im Browser habe, wenn ich mir die einzelnen Array-Elemente anzeigen lasse:

/^Template.php?Auswahl=Home$/
/^Template.php?Auswahl=Home?Aktion=Lesen&Seite=[19]{1,}$/
/^Template.php?Auswahl=Home?Aktion=Eintragen$/
...

Wenn ich mir die Variable $Query_String ausgeben lasse, dann erhalte ich aber stets Ausgaben, die konform zu den Array-Elementen sind, d.h. ich muss Übereinstimmungen haben.

Ist es in diesem Zusammenhang von Bedeutung, dass die Variable (?) "Seite" des zweiten Array-Elements in roter Schrift angezeigt wird?

Welchen Fehler habe ich gemacht, dass ich hier kein korrektes Ergebnis bekomme, d.h. das Flag $Ergebnis auf true gesetzt wird?

Vielen Dank für eure Hilfe.

Gruß
Enrico