Es wird ja nicht zu Unrecht vor den Problematiken gewarnt, die mit der php.ini-Einstellung register globals = on auftreten.
Ich bin jetzt über etwas gestolpert, dass ich in solchen Warnhinweisen entweder nicht gesehen, oder übersehen habe, und das mich eine Stunde intensiver Debugging-Arbeit gekostet hat.
Ein Script, das bei Register Globals = off lief, machte auf einer anderen Maschine mit der Einstellung = on Unsinn. Ich dachte, ich mach das hier mal öffentlich, damit andere nicht auch reinfallen.
Ich habe eine Variable $id. Diese wird dann gesetzt, wenn ein Kunde sich anmeldet. Diese Variable wollte ich mit
verwahren, um sie dann im Memberbereich immer wieder benutzen zu können. Das klappte auch alles so, wie geplant.
Auf der anderen Maschine veränderte sich $_SESSION['id '] aber gelegentlich. Durch Ausgabe von print_r($_SESSION) habe ich das Problem auf eine Zeile zurückführen können, in der $id verändert wird. Dieses Neusetzen von $id verändert auch $_SESSION['id']. Ich habe mir dadurch geholfen, dass ich die SESSION-Variable anders benannt habe.
Ich habe mir dann, um auch ganz sicherzugehen, dass ich hier keinem Phantom nachjage, dies Script hier gemacht:
Beim ersten Aufruf wird SESSION = 123 ausgegeben, nach jedem weiteren Aufruf (Aktualisieren mit F5) wird SESSION = 456 ausgegeben.
So weit so schlecht. Liegt das nun wirklich an register globals = on oder habe ich hier noch mit anderen schlechten Einstellungen zu tun?
Ich bin jetzt über etwas gestolpert, dass ich in solchen Warnhinweisen entweder nicht gesehen, oder übersehen habe, und das mich eine Stunde intensiver Debugging-Arbeit gekostet hat.
Ein Script, das bei Register Globals = off lief, machte auf einer anderen Maschine mit der Einstellung = on Unsinn. Ich dachte, ich mach das hier mal öffentlich, damit andere nicht auch reinfallen.
Ich habe eine Variable $id. Diese wird dann gesetzt, wenn ein Kunde sich anmeldet. Diese Variable wollte ich mit
PHP-Code:
session_start();
$_SESSION['id '] = $id;
Auf der anderen Maschine veränderte sich $_SESSION['id '] aber gelegentlich. Durch Ausgabe von print_r($_SESSION) habe ich das Problem auf eine Zeile zurückführen können, in der $id verändert wird. Dieses Neusetzen von $id verändert auch $_SESSION['id']. Ich habe mir dadurch geholfen, dass ich die SESSION-Variable anders benannt habe.
Ich habe mir dann, um auch ganz sicherzugehen, dass ich hier keinem Phantom nachjage, dies Script hier gemacht:
PHP-Code:
<?php
session_start();
$_SESSION['test'] = 123;
$test = 456;
echo 'SESSION = ' . $_SESSION['test'];
?>
So weit so schlecht. Liegt das nun wirklich an register globals = on oder habe ich hier noch mit anderen schlechten Einstellungen zu tun?
Kommentar