Neue PHP-Version: case-Anweisungen funktioniert nicht
Uwe
- php
0 Thomas Luethi0 Uwe
0 e7
Hallo,
ich habe ein ziemlich großes Problem mit meiner webseite. Die läuft auf dem Server richtig gut. Jetzt wollte ich sie mal wieder überarbeiten und habe desahlb auf meinem neuen Computer die neuste PHP-Version von php.net runtergeladen (läuft bei mir zusammen mit einem Apache-Server) Jetzt habe ich das Problem, dass die ganzen case- Anweisungen nicht mehr funktionieren. Die absouluten script-urls habe ich aber alle (durch suchen und ersetzen) ordnungsgemäß geändert. Warum fuktioniert das nicht.
Ich hoffe mir kann jemand helfen...
Gruß Uwe
Hallo,
[...] die neuste PHP-Version von php.net runtergeladen [...] Jetzt habe ich das Problem, dass die ganzen case- Anweisungen nicht mehr funktionieren.
SWITCH/CASE gibt es nach wie vor, und es funktioniert einwandfrei.
Ich vermute mal, dass Du globale Variablen verwendest,
die nun nicht mehr "funktionieren", weil register_globals=off ist.
Stelle um auf $_GET/$_POST/$_REQUEST.
http://www.dclp-faq.de/q/q-sicherheit-global.html
http://www.dclp-faq.de/q/q-php-variablen.html
Gruesse,
Thomas
Das klingt einleuchtent.
Danke erst mal für deine Antwort, ich werde es mal ausprobieren. War das bei den älteren PHP-Versionen anders definiert mit den globalen Variablen?
Gruß Uwe
Hallo,
War das bei den älteren PHP-Versionen anders definiert mit den globalen Variablen?
Ja, dort waren die Parameter aus GET/POST/COOKIE standardmaessig als
globale Variablen verfuegbar.
Bei einem Link in der Form
blabla.php?name=wert
war im PHP-Skript ohne weiteres die globale Variable $name definiert
und enthielt den Wert "wert".
Viele alte Beispiel-Skripts sind aus Bequemlichkeit so geschrieben,
obwohl schon "immer" die Variante $HTTP_GET_VARS['name'] zur
Verfuegung gestanden haette und "sauberer" gewesen waere.
Ich vermute, dass Du eine solche globale Variable in Deiner
Switch/Case-Entscheidung verwendest.
Seit PHP 4.2 ist eben in der Standard-Konfiguration register_globals=off,
und somit kann man nur noch mit $_GET['name'] bzw. $_REQUEST['variable']
auf die Variable zugreifen.
Gruesse,
Thomas
Hi,
1. was meinst du mit "der neuesten"? PHP 4.x oder PHP 5?
2. Vielleicht hast du irgendetwas illegales verwendet, welches vorher von PHP ignoriert wurde, jetzt aber nicht mehr klappt?
E7