Moin!
switch ($site) {
case news:
include "news/news.php";
break;
case writenews:
include "news/newsa.php";
break;
dieses switsch habe ich um dateien zu includen, online funzt es - lokal nicht...
so sieht der link aus: <a href="?site=viewforum&inc=forum">
ich habe auch schon _versucht_ die phpinfo() ausgabe zu vergleichen... aber sich habe ich da was übersehen... sonst würde es ja gehen...
Hast du dir mal (so ganz banal gefragt) den Inhalt der Variablen $site ausgeben lassen? Wahrscheinlich nicht, denn dann hättest du gemerkt, dass diese Variable leer ist.
Die Ausgabe von phpinfo(INFO_VARIABLES); zeigt dir, welche Werte aus externen Quellen (GET, POST, COOKIE, SERVER, ENV) das Skript erhält. Wenn die Option "register_globals=off" ist, dann werden nicht mehr automatisch globale Variablen mit dem Namen z.B. der URL-Parameter angelegt. Das ist ein Sicherheitsfeature, um das Einschmuggeln von Variablenwerten in schlecht geschriebene (und dafür anfällige) Skripte zu unterbinden.
Greife deshalb nicht auf $site (und $inc - dein URL-Parameter deutet sowas an) zu, sondern auf $_GET['site'] und $_GET['inc']. Du kannst per Suchen/Ersetzen deine Skripte schnell durchgehen und mußt nur bei den Stellen, in denen die Variablen innerhalb von doppelten Anführungszeichen stehen, die neue Variable noch in geschweifte Klammern setzen. Danach sollte dein Skript wieder funktionieren.
Entscheidend ist auch, ob dein Provider noch eine PHP-Version 4.0.x benutzt. Diese kennt die Hashes $_GET, $_POST etc. noch nicht, sondern nennt sie $HTTP_GET_VARS, $HTTP_POST_VARS und so weiter. Siehe auch http://www.php.net/manual/de/print/language.variables.predefined.php
- Sven Rautenberg