Mailinglisten-Archive |
Guten Morgen, > > nur nochmal zur Verdeutlichung, du hattest doch geschrieben > das es nur > um eine bestimmte Klasse ging , oder? Also das es mit anderen Klassen > klappen würde!!! > > Ja oder Nein? > wenn nein, besteht das Problem nur mit Klassen oder kannst keine > Variablen in der Session speichern? Andere Variablen in der Session sind kein Problem. > > Include('object.class'); > > $foo = new obj(); > > Session_start(); > > $_SESSION['foo'] = $foo; > > ... > > das ist schlecht so!!! > wenn z.b. 'register_globals=on' ist, dann ist $foo und > $_SESSION['foo'] > eh die selbe Variable! Is 'on'. Da sieht man wie weit mich die Verzweiflung bereits gebracht hat! :D Aber wenn "$foo = new obj();" == "$_SESSION['foo'] = $foo;" müsste doch auch Include('object.class'); $_SESSION['foo'] = new obj(); Session_start(); Funktionieren. Warum? Ich schreibe doch in eine Session, die erst in der nächsten Zeile gestartet wird, oder irre ich wieder? Zum Verständnis jetzt nochmal das ganz etwas vollständiger. Ich wollte nur nicht gleich die Liste mit QC überfluten. Die Klasse aufs wesentliche reduziert: -------------------- class userverwaltung { var $arrayUserDaten = Array(); // Die Methode liefert die Userdaten zurück function getArrayUserDaten($key) { if (empty($key)) { return $this->arrayUserDaten; } else { return $this->arrayUserDaten[$key]; } } // Die Methode setzt die Userdaten function setArrayUserDaten($key, $wert) { print '<br><b>Daten werden gesetzt</b>'; if ($wert == "") { $this->arrayUserDaten = $key; } else { $this->arrayUserDaten[$key] = $wert; } } //Funktionen dienen zum speichern der Klasse in der Session /*function __sleep() { return array('arrayUserDaten','arrayConfigDaten'); } function __wakeup() { }*/ // Die Methode versucht den User anzumelden und liefert folgende Werte zurück // Erfolgsfall = 0 // Fehlerfall = 1 function checkLoginData($email,$password) { $password = md5($password); $query = "SELECT pw from db WHERE email='".$email."' LIMIT 1"; include('db.cod'); $result = mysql_query($query); if (!$result) { print "<br>Daten konnten nicht aus db abgefragt werden."; die; } $daten_row = mysql_fetch_array($result); if ($password == $daten_row['pw']) { $login = 0; } else { $login = 1; } return $login; } // Die Methode loggt einen User in die aktuelle Session ein. // Die Daten werden anhand der E-Mailadresse ermittelt. function loginUser($loginEmail) { $query = "SELECT * FROM db WHERE email = '".$loginEmail."' LIMIT 1"; include('db.cod'); $result = mysql_query($query); if (!$result) { print "<br>Daten konnten nicht aus db abgefragt werden."; die; } $daten_row = mysql_fetch_array($result); $this->setArrayUserDaten($daten_row); //Testausgabe, ob die Daten überhaupt da sind print '<b>User '.$this->arrayUserDaten['name'].', '.$this->arrayUserDaten['vorname'].' ist angemeldet</b>'; } } --------------------- Der Aufruf der Klasse, die Initialisierung... Include('userverwaltung.class'); $foo = new obj(); Session_start(); $_SESSION['foo'] = $foo; --------------------- ... Und die Arbeit damit. if ($_REQUEST['action'] == 'login') { $userIsKnown = $_SESSION['class_anmeldung']->checkLoginData($_REQUEST['login_email'],$_ REQUEST['login_password']); if ($userIsKnown == 0) { $_SESSION['class_anmeldung']->loginUser($_REQUEST['login_email']); } } --------------------- Letzten Endes soll dabei rauskommen, dass, wenn eine E-Mailadresse und ein Passwort gesendet werden, die Daten aus der Datenbank geprüft werden und ein Rückgabewert zurückgeliefert wird, an dem sich entscheidet, ob alle Daten geholt werden. Das funktioniert auch reibungslos und die Meldung, dass der entsprechende User angemeldet wurde erscheint auf dem Bildschirm. Klickt man jetzt jetzt auch einen anderen link, der die gleiche Seite noch mal aufruft und die Session-ID mit übergibt, jedoch mit anderen Parametern, sind anschließend alle Daten futsch. Die brauch ich aber und der Unsinn mit der userverwaltung.class soll mir ja nur die Daten besorgen, damit ich sie in der Hinterhand habe. Das sind auch die einzigen Zeilen, in denen ich auf die Klasse zugreife. Ich hoffe das hilft weiter. Gruß, Daniel
php::bar PHP Wiki - Listenarchive