Register Globals

Irgendwelche Probleme mit XAMPP für Windows? Dann ist hier genau der richtige Ort um nachzufragen.

Register Globals

Postby earens » 21. April 2012 07:50

Hallo,

ich habe noch einige Seiten und Scripte aus Zeiten, in denen Register Globals On noch aktuell war. Diese alten seiten möchte ich weiterhin local betreiben bzw. schrittweise umstellen. Nun habe ich einen neuen Rechner, neues Xampp installiert, in der c:\xampp\php\php.ini habe ich register_globals = On eingestellt, Apache neu gestartet, auch bei Anzeige der PHPINFO steht, das die register globals on sind.

Trotzdem bekomme ich haufenweise Meldungen folgender Art:

Notice: Undefined variable: ts in C:\htdocs\*.php on line 29
Notice: Undefined variable: senden in C:\htdocs\*.php on line 78
Undefined variable: sendmail in C:\htdocs\formular.php on line 6

Was kann ich nocht tun, um meiner alten Seiten wieder lokal zum laufen zu bekommen?

Gruß und Danke, Earens
earens
 
Posts: 5
Joined: 21. April 2012 07:43
Operating System: Win7 Pro 64 Bit

Re: Register Globals

Postby WilliL » 21. April 2012 11:14

earens wrote:Trotzdem bekomme ich haufenweise Meldungen folgender Art:

Notice: Undefined variable: ts in C:\htdocs\*.php on line 29
Notice: Undefined variable: senden in C:\htdocs\*.php on line 78
Undefined variable: sendmail in C:\htdocs\formular.php on line 6

Hallo earens,

das hat nichts mit "register_globals" zu tun sondern damit, dass du hier auf Variablen zugreifst, die zu diesem Zeitpunkt nicht definiert sind.
(Ratemodus: Selbstaufruf des Formularscripts mit POST)

Abhilfe:
Entweder vor Nutzung der Variablen testen ob sie gesetzt ist [ if isset(post_variable)..] -- würde ich bevorzugen
oder die Fehlermeldung ~notice in der php.ini abschalten. [error_reporting = E_ALL | E_STRICT ist voreingestellt]
Willi
WilliL
 
Posts: 660
Joined: 08. January 2010 10:54
Operating System: Win7Home Prem 64 SP1

Re: Register Globals

Postby earens » 22. April 2012 10:50

Hallo,

kurze Rückfrage, nach meiner Info geht Info geht es doch genau darum bei register_globals, dass Variablen einfach durch "Benutzung" erstellt werden, und nicht vorher definiert werden müssen. Daher kann ich auch auf Variablen "einfach" zugreifen, wenn diese per Formular oder Browserzeile übergeben werden. Mit register_globals off muss ich jeweils über $_GET['open'] bzw. $_Post['open'] auf die Variablen zugreifen, und daher meine Scripte komplett umschreiben.

Bisher war es nun bei Xampp Neuinstallationen so, dass nach Einstellung der register_globals on meine alten Scripte liefen.

Die Fehlermeldung auszuschalten - ähnlich dem @.... vor manchen Befehlen hilft mir nur bedingt weiter, da zwar die Fehlemeldungen dann weg sind, die Scripte aber immer noch nicht funktionieren ...

Oder?

gruß, Earens
earens
 
Posts: 5
Joined: 21. April 2012 07:43
Operating System: Win7 Pro 64 Bit

Re: Register Globals

Postby WilliL » 22. April 2012 13:48

earens wrote:kurze Rückfrage, nach meiner Info geht Info geht es doch genau darum bei register_globals, dass Variablen einfach durch "Benutzung" erstellt werden, und nicht vorher definiert werden müssen. Daher kann ich auch auf Variablen "einfach" zugreifen, wenn diese per Formular oder Browserzeile übergeben werden.

auf "Variablen "einfach" zugreifen" stimme ich zu, einfach auf undefinierte Variablen zugreifen halte bestenfalls für unsauberes programmieren ;)
Das eine hat mit dem anderen nichts zu tun.

Wenn du den script nicht ändern willst, bleiben dir nur 2 Möglichkeiten:
a) php.ini >> error_reporting = E_ALL & ~E_NOTICE | E_STRICT (Show all errors, except for notices)
b) Oder im Formularscript selber >> <php? error_reporting = E_ALL & ~E_NOTICE | E_STRICT ?>, das dann als *.php gespeichert werden sollte. Aber auch hier wirst du dann Anpassungen machen müssen.

Nicht definierte Variablen würde ich grundsätzlich vermeiden. (Script wird unübersichtlich, Fehlerquelle, potenzielles Sicherheitsrisiko)
Ein if(!isset($variable)) $variable="Initialwert"; ist aus meiner Sicht ein sprechender Hinweis und verhindert reichlich Fehler bei einer Scripterweiterung (z.B. Mail, Einbindung in DB).
Auch Tippfehler bei der Variablen fallen direkt über ein "notice" auf.
Willi
WilliL
 
Posts: 660
Joined: 08. January 2010 10:54
Operating System: Win7Home Prem 64 SP1

Re: Register Globals

Postby Altrea » 22. April 2012 14:00

Hallo earens,

earens wrote:Mit register_globals off muss ich jeweils über $_GET['open'] bzw. $_Post['open'] auf die Variablen zugreifen, und daher meine Scripte komplett umschreiben.

"komplett umschreiben" ist reichlich dramatisiert. Die Änderung ist nicht wirklich kompliziert und erfordert lediglich etwas Fleißarbeit.
PHP wird seit Version 4.2.0 mit register_globals standardmäßig deaktiviert ausgeliefert. Diese PHP Version wurde am 22. April 2002 (also genau heute vor 10 Jahren) released.

$_Post['open'] bringt dich übrigens auch nicht zum Erfolg. Die Schreibweise der Variablen und Arrays ist case-sensitive.

earens wrote:Bisher war es nun bei Xampp Neuinstallationen so, dass nach Einstellung der register_globals on meine alten Scripte liefen.

Selbst wenn das heute noch möglich ist so wird dies mit dem release einer der nächsten Major PHP releases keine Option mehr sein. register_globals ist seit PHP 5.3 als Derpecated markiert und wird somit bald komplett und ersatzlos entfernt.

earens wrote:Die Fehlermeldung auszuschalten - ähnlich dem @.... vor manchen Befehlen hilft mir nur bedingt weiter, da zwar die Fehlemeldungen dann weg sind, die Scripte aber immer noch nicht funktionieren ...

Zum einen hat PHP eine relativ gutmütige Fehlerbehandlung. Notices beeinträchtigen die Funktionalität nicht, es sei denn du hast dich nicht ans EVA-prinzip gehalten und die Ausgabe der Fehlermeldung selbst behindert bestimmte Funktionen, die nur im Header funktionieren (eigene header() setzen, session_start, etc).
Zum anderen wird es sowieso so gewesen sein, dass deine Fehlermeldungen (zumindest die Notices) bisher ausgeblendet waren. XAMPP hat das error_reporting bei den aktuelleren XAMPP Versionen hochgesetzt.

Du solltest deine Scripte jetzt dringend von der Abhängigkeit register_globals lösen, das ist der beste Rat den ich dir geben kann.

mit freundlichen Grüßen,
Altrea
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64


Return to XAMPP für Windows

Who is online

Users browsing this forum: No registered users and 16 guests