Variablen mit Array prüfen

Seven Secrets

Erfahrenes Mitglied
Hallo,

ich habe folgenes Script in verwendung und es wir ständig gehackt. Ich habe nach Prüfung herrausgefunden, daß es an den Variablen liegt, die nicht geprüft werden.

PHP:
//------Register Globals
$GET_POST = array_merge($_GET, $_POST, $_SESSION);
extract($GET_POST);
//------

// Datenbank Auslesen
$db = file("$pn_db/news.dat");
$db_anz = count($db);
$kate = file("$pn_db/kats.dat");
$anz_kat = count($kate);
$db_sub = file("$pn_db/submit.dat");
$anz_sub = count($db_sub);
// Ende

$seiten = $db_anz/$nps;
$seiten = ceil($seiten);

// Dateien Includen
include("$pn_lang/functions.php");
include("$pn_lang/language_eng.php");
$sort_dropdown = sort_dropdown();
// Ende

if($pn=='' OR $pn==view)

Nun habe ich mir überlegt, die Variablen auf Inhalt zu überprüfen, da dieser Inhalt nur bestimmte Werte annehmen kann. Wie muß ich das Anstellen?
 
Worauf möchtest du denn die Variable prüfen? Bzw. welche Werte dürfen sie annehmen?
Also eigentlich müsstest du doch nur, bevor du irgendwas mergest, die Inhalte überprüfen. Evtl mit einem Regulärem Ausdruck oder je nach dem welche Werte die Variablen annehmen dürfen...
 
Der Teil if($pn=='' OR $pn==view) mit $pn kann folgende werte annehmen:

view
post
detail
search
archiv
editform
delform
admin

Es darf nix anderes verarbeitet werden um somit alles andere zu blocken.
 
Ja dann... wie wärs mit einer switch-Anweisung:
PHP:
switch ($pn) {
case "post":
   //do sth
   break;
case "detail":
   //do sth
   break;
/*...*/
default:
   //do default, like $pn==" or $pn=="view"
   break;
}
Oder du machst am Anfang eine IF-Abfrage:
PHP:
if ($pn!="post" && $pn!="detail" &&  /*...*/ && $pn!="admin") $pn = "view";
Weiss nicht genau, was später damit noch geschehen wird.
 
Das mit der if-Anweisung klingt schon gut, nur die aufgerufenen Variablen werden zum schluß so 20 Stück, aus diesem Grund dachte ich, amn kann mit nem Array vergleichen!
 
Zurück