Mailinglisten-Archive |
Hallo, Ausgangssituation ist php 4.3.9 mit register_globals=off und das Problem, dass eine Objektinstanz als Session-Variable zwischen den Seiten ihre Daten 'vergisst', hier jeweils die Auszüge: class.php: ---------- 8< --------- class test { $var = 0; } ---------- 8< --------- form.php entält ein POST-Formular und ruft sich meistens selber auf: ---------- 8< --------- include ('class.php'); session_start(); if (!isset($_SESSION['obj'])) { session_register ('obj'); $obj = new test(); $obj->var = 20; } else $obj = $_SESSION['obj']; ---------- 8< --------- Beim ersten Aufruf wird $obj sauber erzeugt, bei den folgenden Aufrufen ist $obj->var=0, obwohl der erste if-Zweig nicht durchlaufen wird!?!? Gestern habe ich es kurzfristig gefixed bekommen, in dem ich am Ende des Scripte der $_SESSION['obj'] = $obj wieder zugewiesen haben, aber das ist doch 'unlogisch'. Die Vermutung, dass mit verschiedenen Instanzen (und nicht Objektreferenzen) gearbeitet wird, hat mich dann zum Einsatz von $obj = &$_SESSION['obj'] geführt, aber das half nicht. p.s: ein Beispiel, warum mit register_globals=off zu viel Sicherheit hochgefahren wird: wenn Scripte sich selbst aufrufen (kommt bei Formularen ja gerne vor), ist durch session_register die Variable im globalen Namespace, wenn sie aber schon existiert, dann ist sie es nicht mehr (btw: auch extract hat bei mir dann nicht geholfen)... Hat dazu jemand Ideen, Hinweise oder Tipps? Danke... -- Oliver Michalak GoLive Extensions Actions: http://www.golive.werk01.de
php::bar PHP Wiki - Listenarchive