Scripte auf register_globals=off umschreiben
Heidus
- php
Hallo,
ich mußte gerade einige Scripte von einem register_globals=on-Server auf einen off-Server umziehen.
Gibt es eine Hilfe, ein Script oder ein Programm, das einem beim Umschreiben der Scripte hilfreich zur Hand gehen kann?
Na gut, zur Not würde auch schon eine gute Anleitung helfen, die auf Tücken hinweist, damit ich nichts vergesse beim umschreiben.
Viele Grüße, Heidus
Hallo
Hallo,
ich mußte gerade einige Scripte von einem register_globals=on-Server auf einen off-Server umziehen.
Gibt es eine Hilfe, ein Script oder ein Programm, das einem beim Umschreiben der Scripte hilfreich zur Hand gehen kann?Na gut, zur Not würde auch schon eine gute Anleitung helfen, die auf Tücken hinweist, damit ich nichts vergesse beim umschreiben.
Auch schon? ;-)
Wo vorher Variablen automatisch mit übergebenen Werten gefüllt wurden, z.B. bekam $name
aus einer URL (http://example.com?name=Willy) automatisch den Wert des Parameters "name" (Willy) (der Wert hätte aber ohne dass du das weißt, aus anderer Quelle stammen können), wird mit register_globals=off explizit auf die Quelle abgestellt. Wenn ein Wert mit GET oder POST übermittelt werden soll, steht er im superglobalen Array[1] $_GET
bzw. $_POST
, also in $_GET["name"]
bzw. $_POST["name"]
.
Weiterhin stehen die Arrays $_SESSION
und $_COOKIE
für (auch indirekte) Benutzereingaben zur Verfügung. Die Prüfung derselben bleibt davon natürlich unbelassen.
[1] Die superglobalen kannst du in jeder Funktion, ohne umkopieren und ohne die Verwendung von global
, direkt verwenden. Neben den genannten gibt es noch $_SERVER
, $_ENV
, $_REQUEST
...
Zu $_REQUEST
wäre noch zu sagen, dass es die Werte von $_GET
, $_POST
, $_SESSION
und $_COOKIE
in sich vereinigt, seine Verwendung aber den Vorteil der Quellsicherheit aufgibt.
Tschö, Auge
Hello,
ich mußte gerade einige Scripte von einem register_globals=on-Server auf einen off-Server umziehen.
Gibt es eine Hilfe, ein Script oder ein Programm, das einem beim Umschreiben der Scripte hilfreich zur Hand gehen kann?
Das Umschreiben ist eklig.
Meistensmuss ja auch noch von session_register() auf $_SESSION umgestellt werden und die "Long-Arrays", also $HTTP_*_VARS, müssen auch noch ersetzt werden.
Das kann recht aufwändig werden. Ich habe mich auch schon ein paarmal damit herumgeschlagen und bisher kein Hilfsprogramm ausfindig machen können.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Hi,
schlechte Lösung:
extract($_REQUEST);
// am Anfang von jedem Script
besserer Ansatz:
<?php
$expectedvar = $_GET["expectedvar"];
$formfield2 = $_REQUEST["formfield2"];
// sichere Methode, da nur erwartete Parameter importiert werden
Mit beiden Wegen ersparst du dir das mühsame Umschreiben aller
$altvariablen-Referenzen in $_REQUEST["..."]. Die zweite Methode
ist wirklich empfehlenswert, und der eigentliche Hintergrund für
die Einführung von register_globals=off. (Später könntest du hier
noch sehr einfach filter_() oder preg_replace() einfügen...)
Grüße.
[latex]Mae govannen![/latex]
besserer Ansatz:
<?php
$expectedvar = $_GET["expectedvar"];
$formfield2 = $_REQUEST["formfield2"];
// sichere Methode, da nur erwartete Parameter importiert werden
Dazu muß man aber erst alle Variablen feststellen, die vorher automatisch befüllt wurden, was wohl zumindest bei größeren Projekten das Hauptproblem sein wird. Und wenn man ohnehin alle Variablen rauskramen muß, kann man sie auch direkt überall mit dateiübegreifendem Suchen&Ersetzen durch die entsprechendenen neuen Werte ersetzen.
Cü,
Kai
--
Ash nazg durbatulûk, ash nazg gimbatul,ash nazg thrakatulûk, agh burzum-ishi krimpatul
Sacrifice - the future has it's price
And today is only yesterday's tomorrow
selfcode sh:( fo:| ch:? rl:( br:< n4:# ie:{ mo:| va:) js:) de:> zu:) fl:( ss:| ls:?