Abfangen falscher Werte für zwei Variablen
Mike
- php
0 Julian Hofmann0 Mike
Hi Forum,
ich habe eine mehrsprachige, dynamische Website programmiert, deren Inhalt mittels der Variablen $page und $lang aus einer DB generiert wird.
Die Navigation bzw. die Sprachauswahl erzeugen $page und $lang.
Beim ersten Aufruf der Seite werden die beiden defaultmäßig auf 'home' und 'de' gesetzt.
Für den Fall, dass versehentlich (oder absichtlich) die URL manipuliert wird (in der die Variablen übergeben werden), möchte ich alle nicht in der DB vorhandenen Seiten bzw. Sprachen abfangen und eine Fehlerseite aufrufen. Das sieht bei mir so aus, funktioniert aber nicht:
if (!empty($page) || !empty($lang)) { //d.h. es wurde eine Variable übergeben
$query_check = mysql_query("SELECT page_lang, page_name FROM page"); //Werte in DB?
while ($result_check = mysql_fetch_array($query_check)) {
$check_page = $result_check['page_name'];
$check_lang = $result_check['page_lang'];
if ($_GET['page'] != $check_page) {
$_GET['page'] = "error";
}
elseif ($_GET['lang'] != $check_lang) {
$_GET['page'] = "error";
}
}
}
1000 Dank für Eure Tipps,
Mike
Hallo Mike.
Irgendwie machst Du Dir (und der DB) mehr Arbeit als sein müsste. Wenn Du Deine Seite anhand der Parameter generierst, dann ist die DB-Abfrage doch immer leer wenn die Parameter nicht möglich sind. Es sollte daher deutlich einfacher sein diesen Fall abzufangen statt die ganze DB erst zu durchsuchen.
Grüße aus Würzburg
Julian
Hi Julian,
danke für Deine Antwort!
Irgendwie machst Du Dir (und der DB) mehr Arbeit als sein müsste. Wenn Du Deine Seite anhand der Parameter generierst, dann ist die DB-Abfrage doch immer leer wenn die Parameter nicht möglich sind. Es sollte daher deutlich einfacher sein diesen Fall abzufangen statt die ganze DB erst zu durchsuchen.
Naja, aber dann wird einfach eine leere Seite angezeigt!
Gruß, Mike
Hallo Mike.
Ok, war nicht einfach nachzuvollziehen.
Du stellt ganz normal Deine Anfrage an die DB und definiert Dir bereits zuvor leere Variablen für den kommenden Inhalt. Ergibt die Abfrage ein Resultat, so werden die Variablen mit echten Werten gefüllt. Wenn nun nach der Abfrage die Werte immernoch leer sind, dann gab's die Sprache und Seite nicht
Grobe Codeskizze
$inhalt = "";
// hier die SQL-Abfrage
if(trim($inhalt)!="") {
echo $inhalt
}
else {
echo " Die Seite gibt's nicht!";
}
Grüße aus Würzburg
Julian