?Hej Nyhedsgruppe,
Jeg har lavet en sessions-klasse som overskriver den eksisterende
php-sessions-funktion via session_set_save_handler. Det virker for det meste
fint, med udfald hver 10ende gang eller sådan noget hvor den ikke opdaterer
session data.
session.php inkluderes som den første lige efter config.php
(jeg har fjernet al urelevant kode)
register_shutdown_function('session_write_close');
class session{
function open($name){
return true;
}
function close(){
return true;
}
function read($id){
.. læs fra database
}
function write($id,$data){
$time = time();
// check om sessionen er indsat i databasen
$result = mysql_query("SELECT NULL FROM sessions WHERE id='$id'");
if(mysql_num_rows($result)>0){
return mysql_query("UPDATE sessions SET data='$data',time='$time' WHERE
id='$id'");
}else{
return mysql_query("INSERT INTO sessions (id,data,time) VALUES
('$id','$data','$time')");
}
}
function destroy($id){
slet fra databasen
}
function gc($maxlifetime){// ryd op
$expires = time()+3600;
mysql_query("DELETE FROM sessions WHERE `time`<=$expires");
return true;
}
}
$Session = new session();
session_set_save_handler(
array('Session', 'open'),
array('Session', 'close'),
array('Session', 'read'),
array('Session', 'write'),
array('Session', 'destroy'),
array('Session', 'gc')
);
session_start();
Med venlig hilsen Anders
|