Uwe: Neue PHP-Version: case-Anweisungen funktioniert nicht

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

  1. 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

    1. 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

      1. 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

  2. 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