Seite 1 von 2

PHP: register_globals

Verfasst: 15.12.2003 14:01
von hotkey
Hallo Leute.

Ich habe folgendes Problem. Ich habe auf meinem eigenen WebServer eine WebSite programmiert. Seid PHP 4.x.x ist register_globals auf off gesetzt und das ist auch gut so. Leider kann ich die WebSite auf meinem eigenen WebServer nicht hosten, weil das gegen die Regeln des DFN verstößt. Auf dem neuen WebServer ist register_globals auf on gesetzt und ich habe keinen Einfluß darauf, wo die WebSite gehostet wird. Da ich bei der WebSite mit Sessions arbeite ist der Funktionsumfang ein wenig eingeschrenkt. Denn der WebServer macht zwischen den Variablen $_POST['login_group'] und $_SESSION['login_group'] keinen Unterschied mehr, da sie den gleichen Bezeichner enthalten. Jetzt wäre es natürlich ein höllischer Aufwand die ganzen Variablen umzubenennen, zu mal das bei mehreren tausend Zeilen Code auch relativ Fehleranfällig ist. Mir war so als gäbe es die Möglichkeit über ein PHP Skript den Wert für register_globals zu ändern, aber ich komme nicht mehr darauf. Kennt jemand die Lösung?

Danke.

Verfasst: 15.12.2003 14:20
von besucher
leider kann man register_globals nicht umstellen, denn diese einstellung ist bei z.b. apache in der php.ini im windows verzeichnis des servers gespeichert, und ich bin mir sicher, dass der betreiber des servers, es verhindern wird, dass man diese datei umschreiben kann.

Verfasst: 15.12.2003 14:46
von hotkey
Ich würde mal behaupten das so ein Server in der Regel unter Linux betrieben wird, aber das ist ja nebensächlich. Ich bin mir nicht sicher wie ein Provider das realisiert. Der wird ja nicht jedem Kunden einen Server hinstellen, sondern das ganze viel eher über Virtuelle Hosts realisieren und da könnte ich mir schon vorstellen das der Kunde das über eine Skripteinstellung lösen kann. Ich war der Meinung ich hätte da mal etwas in einem Buch gelesen, aber das waren so viele Wälzer das ich nicht mal mehr weiß welches es war. Da ich einen eigenen WebServer habe, war das für mich auch völlig uninteressant :(

Verfasst: 15.12.2003 15:12
von besucher
der provider wird das sicher zu verhindern wissen, denn es soll ein grosses sicherheitsrisiko sein, wenn register_lobals on ist. deshalb ist es ja auch nun standartmässig auf off. also finger weg :evil:

Verfasst: 15.12.2003 15:54
von hotkey
Du hast das falsch verstanden. Die Einstellung ist beim Provider auf on und ich will es auf off setzen. Angeblich gibt es die Variante das ganze über eine .htaccess Datei auf off zu setzen. Das werde ich mir mal anschauen, wenn ich die Zeit dazu habe.

Verfasst: 15.12.2003 17:33
von besucher
der provider hat es absichtlich auf off gesetzt, du kannst daran nichts verändern. das ist nun standart und wird es auch bleiben, wenn dir das nicht gefällt, dann hasst du leider pech gehabt, ausserdem sollte man sowieso auf register_globals on sein.

ausserdem will ich dieses script erstmal sehen. schliesslich musst du da auf die php.ini (bei windows) zugreifen, und das wird dir der provider sicher nicht erlauben.

Verfasst: 15.12.2003 17:37
von Pyramide
hotkey hat geschrieben:Angeblich gibt es die Variante das ganze über eine .htaccess Datei auf off zu setzen.
Nicht nur angeblich: http://de.php.net/manual/de/configurati ... ges.apache

Re: PHP: register_globals

Verfasst: 15.12.2003 17:38
von PhilippK
hotkey hat geschrieben:Denn der WebServer macht zwischen den Variablen $_POST['login_group'] und $_SESSION['login_group'] keinen Unterschied mehr
Wer behauptet dies? Die beiden Variablen sind auch bei register_globals = on unterschiedlich. Lediglich die Variable $login_group wird bei aktivierter Option zusätzlich initialisiert.
Das, was du suchst, findest du übrigens hier: http://de.php.net/manual/en/configurati ... er-globals

Gruß, Philipp

Verfasst: 15.12.2003 18:02
von hotkey
Danke, das werde ich mir mal genauer anschauen.

Um das Problem mal beim Namen zu nenne. Wenn ich als Admin angemeldet bin und lege einen neuen User an, dann werden die Daten der Session überschrieben, obwohl die Aktion im Skript nicht vorgesehen hat. Man ist dann also der User den man gerade angelegt hat und natürlich mit eingeschrenkten Rechten. Bei register_globals off ist das nicht der Fall. Deshalb habe ich behauptet das zwischen den Variablen Typen nicht unterschieden wird.

Verfasst: 17.12.2003 17:06
von MrMind
Naja du kannst ja das so programmieren, das das Script auf beide Einstellung einwandfrei Funktioniert. mit

Code: Alles auswählen

ini_get("register_globals");
*also das was Philipp angelinkt hatte*

kannst du überprüfen ob es auf On oder auf Off steht und dementsprechend handeln.


PS: ich suche mir immer nur Hoster aus, die register globals auf OFF haben, da dies besser ist ;)

Mfg
MrMind