Bernd: $_REQUEST Problem bei der PHP Version 4.0.5

Hallo,

ich habe ein Problem das mir eine keine Variablen übermittelt werden auf meinen Heimserver läuft alles wunderbar auch auf meinem Webserver aber auf dem server meines Kundens läuft noch die alte PHP Version 4.0.5 ich vermute mal das die Version kein $_REQUEST oder Session Verarbeitung kann?

Vielleicht hat jemand eine Idee wo ich suchen kann oder weiß es sogar!?

Gruß Bernd

  1. Holladiewaldfee,

    alte PHP Version 4.0.5 ich vermute mal das die Version kein $_REQUEST oder Session Verarbeitung kann?

    Ja, die $_*-Variablen wurden wenn ich mich recht erinnere erst mit 4.1.0 eingeführt. Empfehle Deinem Kunden, auf eine neue Version umzusteigen oder baue einen kleinen Wrapper in Deine Skripte, der die Variablen aus $HTTP_POST_VARS und ähnlichem in $_REQUEST zusammenfasst.

    Ciao,

    Harry

    --
      Herbst ist Wanderzeit!
      http://harry.ilo.de/projekte/berge/
    1. Holladiewaldfee,

      alte PHP Version 4.0.5 ich vermute mal das die Version kein $_REQUEST oder Session Verarbeitung kann?

      Ja, die $_*-Variablen wurden wenn ich mich recht erinnere erst mit 4.1.0 eingeführt. Empfehle Deinem Kunden, auf eine neue Version umzusteigen oder baue einen kleinen Wrapper in Deine Skripte, der die Variablen aus $HTTP_POST_VARS und ähnlichem in $_REQUEST zusammenfasst.

      Hi,

      was verstehst Du unter einem einen kleinen Wrapper?

      Also ich habe ein CMS programmiert und auf 4 Servern läuft es einwandfrei!

      Nun hat der Kunde einen Bekannten mit einem eigenen Server und da ist die 4.0.5 Version drauf ich habe nachgeschaut die ist schon mehr als 2 1/2 Jahre alt. :-(

      Geschweige davon hat der Hoster nie ein Sicherheitsupdate eingespielt inder Vergangeheit gabe es davon zu genüge...

      Mein CMS umbauen ist unmöglich oder? Was würde es heissen wenn ich auf ein alten Standard umbaue? Aber woher soll ich wissen was läuft und was nicht?

      Alles nur scheisse.......

      1. Hallo,

        alte PHP Version 4.0.5 ich vermute mal das die Version kein $_REQUEST oder Session Verarbeitung kann?

        RTFM:
        [http://www.php.net/manual/en/reserved.variables.php#reserved.variables.request]

        "$_REQUEST
        Note:  Introduced in 4.1.0.
        There is no equivalent array in earlier versions."

        Empfehle Deinem Kunden, auf eine neue Version umzusteigen

        Genau. Alles andere ist fahrlaessige Faulheit von Seiten des Webmasters.

        oder baue einen kleinen Wrapper in Deine Skripte, der die Variablen aus $HTTP_POST_VARS und ähnlichem in $_REQUEST zusammenfasst.
        was verstehst Du unter einem einen kleinen Wrapper?

        Vielleicht sowas (ungetestet!):

        foreach ($HTTP_POST_VARS as $key => $value)
          {
            $_REQUEST[$key]=$value;
          }

        Das Gleiche fuer $HTTP_GET_VARS und $HTTP_COOKIE_VARS.
        Dann hast Du alle Werte auch in $_REQUEST stehen.

        Die Funktion foreach() im Manual:
        http://www.php.net/manual/de/control-structures.foreach.php

        Das ganze ist wie gesagt ungetestet und waere bloss eine Notloesung.

        Die richtige Loesung ist, dass der Webserver auf einen aktuellen Stand gebracht wird.

        Nun hat der Kunde einen Bekannten mit einem eigenen Server und da ist die 4.0.5 Version drauf ich habe nachgeschaut die ist schon mehr als 2 1/2 Jahre alt. :-(

        Eben. Das ist ja total veraltet...

        Was würde es heissen wenn ich auf ein alten Standard umbaue?

        Zeitverschwendung.

        Aber woher soll ich wissen was läuft und was nicht?

        Nochmal: RTFM.
        Im PHP-Manual steht eigentlich bei jeder Funktion u.s.w., mit welcher
        Version sie eingefuehrt wurde.

        Alles nur scheisse.......

        Aber, aber!

        Gruesse,

        Thomas

        1. zusammenfasst.

          was verstehst Du unter einem einen kleinen Wrapper?

          Vielleicht sowas (ungetestet!):

          foreach ($HTTP_POST_VARS as $key => $value)
            {
              $_REQUEST[$key]=$value;
            }

          Das Gleiche fuer $HTTP_GET_VARS und $HTTP_COOKIE_VARS.
          Dann hast Du alle Werte auch in $_REQUEST stehen.

          Die Funktion foreach() im Manual:
          http://www.php.net/manual/de/control-structures.foreach.php

          Das ganze ist wie gesagt ungetestet und waere bloss eine Notloesung.

          Die richtige Loesung ist, dass der Webserver auf einen aktuellen Stand gebracht wird.

          Nun hat der Kunde einen Bekannten mit einem eigenen Server und da ist die 4.0.5 Version drauf ich habe nachgeschaut die ist schon mehr als 2 1/2 Jahre alt. :-(

          Eben. Das ist ja total veraltet...

          Was würde es heissen wenn ich auf ein alten Standard umbaue?

          Zeitverschwendung.

          Deine Notlösung habe ich auf der schnelle nicht nicht wirklich verstanden aber was kann ich dafür wenn der Webmaster seinen Server nicht frisch hält!?

          Ich werde mein CMS nicht umprogrammieren! Da ich dann ja dem Stand der Technik 10 Schritte zurück gehen und womöglich alle Sicherheitslöcher offen lege ;-)

          Neee nee das werde ich nicht machen!

          Ich verschwende schon den halben Nachmittag dafür um den Fehler zu suchen und stellen dann fest das der Server seit 2 1/2 Jahre noch nie ein update bekommen hat...

          ;-)

          Wie gesagt aus so einem Mist kann man nur lernen das macht man einmal mit und dann nie wieder.

          Aber nun dazu noch was muß der Webmaster nun ein Update machen oder ist nur eine ini Datei die umgestellt werden muß?  Ein Bekannter meinte das man das einstellen kann...

          Gruß Bernd

          1. Holladiewaldfee,

            Aber nun dazu noch was muß der Webmaster nun ein Update machen oder ist nur eine ini Datei die umgestellt werden muß?  Ein Bekannter meinte das man das einstellen kann...

            Kann man nicht.
            Der Webmaster muß die neuen Sourcen auf die Kiste klatschen und kompilieren. Im Normalfall 'ne Sache von weniger als einer halben Stunde. Dein Bekannter meint wohl register_globals, was aber mit Deinem Problem nichts zu tun hat.

            Ciao,

            Harry

            --
              Herbst ist Wanderzeit!
              http://harry.ilo.de/projekte/berge/
          2. Hallo,

            Deine Notlösung habe ich auf der schnelle nicht nicht wirklich verstanden

            Also, ganz langsam zum Mitschreiben:

            Formular:
            <form action="skript.php" method="POST">
              Vorname: <input type="text" name="vorname"><br>
              <input type="submit" value="Abschicken">
            </form>

            Verarbeitendes Skript skript.php
            Der ins Feld "Vorname" eingegebene Wert steht (unter anderem)
            in folgenden Variablen zur Verfuegung:

            In PHP 4.0:
            $HTTP_POST_VARS['vorname']
            $vorname // Nur bei register_globals="on", hier noch Grundeinstellung

            In PHP ab 4.1.0:
            $HTTP_POST_VARS['vorname']
            $_POST['vorname']
            $_REQUEST['vorname']
            $vorname // Nur bei register_globals="on". Ab PHP 4.2 ist "off" Grundeinstellung.

            Das Wrapper-Skriptlein soll nun dafuer sorgen, dass auch in
            PHP-Versionen unter 4.1 ein Array $_REQUEST zur Verfuegung steht
            und Du mit $_REQUEST['vorname'] auf den Wert zugreifen kannst.

            aber was kann ich dafür wenn der Webmaster seinen Server nicht frisch hält!?

            Du kannst nicht viel dafuer.
            Du hast nur zuwenig

            • Ueberzeugungskraft
            • Einfluss
            • Macht
            • Geld
              ...

            Ich werde mein CMS nicht umprogrammieren! Da ich dann ja dem Stand der Technik 10 Schritte zurück gehen und womöglich alle Sicherheitslöcher offen lege ;-)

            Wuerde ich auch nicht.

            Aber nun dazu noch was muß der Webmaster nun ein Update machen oder ist nur eine ini Datei die umgestellt werden muß?  Ein Bekannter meinte das man das einstellen kann...

            Ein "Umstellen einer ini Datei" wird nichts bringen.
            PHP 4.0.x kennt $_REQUEST, $_GET und $_POST nicht.
            Zudem ist es hoffnungslos veraltet und ein Sicherheitsrisiko.

            Der Webmaster soll:

            • die aktuellste stabile PHP Version installieren
                 http://www.php.net/downloads.php
            • falls noch veraltete PHP-Skripts auf dem Server laufen,
                 die davon abhaengig sind, dass register_globals="on" ist,
                 dies in der php.ini setzen.
            • ggf. weitere Schritte zur Rueckwaerts-Kompatibilitaet treffen
            • Apache neu starten.

            Gruesse,

            Thomas