Mailinglisten-Archive |
> Ist es möglich die session informationen in einer mysql-table zu > speichern anstatt in temporären files oder cookies? Hat das jemand schon > gemacht? Jawohl, habe ich gerade gemacht, speichere allerdings nur eine $nutzer_id. Hat den Vorteil, dass man die eingeloggten Nutzer anzeigen lassen kann. Allerdings ist diese Version noch ein bisschen mit Problemen behaftet - Ein Nutzer kann sich auch mehrmals einloggen... Viel Spass damit, clemens //bei regulaerem Aufruf der Seite $sid=sessionmanage($nutzer_id); if ($sid) $self=$self."?PHPSESSID=".$sid; else $self.="?_"; //beim login $nutzer_id=$row[nutzer_id]; $PHPSESSID=sessionmanage($nutzer_id,"create"); //bei Logout sessionmanage($nutzer_id,'destroy'); function sessionmanage(&$nutzer_id,$aktion='') { global $PHPSESSID; if ($aktion == 'create' && is_nutzer($nutzer_id)) { mt_srand((double)microtime()*1000000); $PHPSESSID = "sid". md5 (uniqid (mt_rand())); $result = mysql_unbuffered_query ('INSERT INTO sessions SET sid ="'.$PHPSESSID.'", zeit ="'.time().'", nutzer_id="'.$nutzer_id.'"') or die ("urgs".mysql_error()); } if (strlen($PHPSESSID) > 0) { if ($aktion == 'destroy') $result = mysql_unbuffered_query ('DELETE FROM sessions where sid ="'.$PHPSESSID.'"') or die ("urgs".mysql_error()); //update der Session if ($aktion == '') { $result = mysql_query ('UPDATE sessions SET zeit="'.time().'" where sid ="'.$PHPSESSID.'"') or die ("urgs".mysql_error()); if (mysql_affected_rows() == 1)//session ok { //holen der nutzer_id aus session-tabelle $result = mysql_query ('SELECT nutzer_id FROM sessions where sid ="'.$PHPSESSID.'"') or die ("urgs".mysql_error()); while($row = mysql_fetch_array($result)){$nutzer_id=$row[nutzer_id];} }else { $PHPSESSID=false; //session nicht ok $nutzer_id =''; //kein Missbrauch mit per GET uebergebenen IDs! } } } else $nutzer_id =''; //kein Missbrauch mit per GET uebergebenen IDs! //automatisch loeschen der alten Sessions ohne Aktualisierung $loeschzeit=time()-(60*60*2); //2h Haltezeit $result = mysql_unbuffered_query ('DELETE FROM sessions where zeit < '.$loeschzeit) or die ("urgs".mysql_error()); return $PHPSESSID; }
php::bar PHP Wiki - Listenarchive