Supportnet / Forum / Skripte(PHP,ASP,Perl...)
Nur bestimmte Variablen zulassen
Frage
Hallo,
für meinen Seitenaufbau nutze ich PHP. Die Sprachauswahl des Inhaltes lässt sich mittels der Variablen $lang bestimmen.
Beispiel-Inhalt:
de-workshops.php
en-workshops.php
Um den Inhalt aufzurufen, gehe ich so vor:
www.domain.de/index.php?page=workshops&lang=de
Das Problem ist, dass man anstelle des "de" oder "en" jede x-beliebige Buchstabemkombinaton eingeben kann und sich daher indirekt prüfen lässt, welche Dateien es auf dem Server gibt und welche nicht.
Der jetzige Code sieht so aus:
[code]
<?php
if ( !isset($page) )
{
$page = "home";
}
if ( !isset($lang) )
{
$lang = "de";
}
?>
[/code]
Es wird mit include(); also anhand der Variablen der Inhalt in die Hauptseite geladen.
Das Problem ist, dass sich indirekt Rückschlüsse daraus ziehen lassen, welche Dateien auf dem Server vorhanden sind und welche nicht.
Nun möchte ich das Eingeben einer x-beliebigen Variablen schon im PHP-Code abfangen, bevor es überhaupt dazu kommt, dass eine nicht-vorhandene oder noch nicht öffentliche Datei auf dem Server gesucht und ggf. "includiert" wird.
Bei der Variable $lang möchte ich zum Beispiel nur die Werte "de" und "en" zulassen.
Welche Möglichkeiten bei meinem obigen Code gibt es in PHP4?
Danke.
Antwort 1 von rabies
Hi,
Wie wäre es mit
--rabies.
Wie wäre es mit
if ($lang == "de" | $lang == "en")
? --rabies.
Antwort 2 von ClemBra
Wenn die liste länger wird:
Nebenbei sollte auf globale Variablen verzichtet werden und die superglobalen Arrays (z.B. $_GET, $_SERVER, $_POST, $_COOKIE, $_SESSION)benutzt werden (wie in meinem Beispiel)
$allowedlang = array("de","en","fr");
if (empty($_GET[´lang´] || !in_array($_GET[´lang´], $allowedlang)) $lang = "de";
Nebenbei sollte auf globale Variablen verzichtet werden und die superglobalen Arrays (z.B. $_GET, $_SERVER, $_POST, $_COOKIE, $_SESSION)benutzt werden (wie in meinem Beispiel)