$_REQUEST Problem bei der PHP Version 4.0.5
Bernd
- php
0 Harry0 Bernd0 Thomas Luethi0 Bernd0 Harry0 Thomas Luethi
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
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
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.......
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
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.phpDas 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
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
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
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:
Gruesse,
Thomas