我想在页面关闭,也就是session失效的时候,添加一条用户退出的日志..
网上有php session的监听代码,可是不知道放在哪里,怎么使用....session_set_save_handler $SESSION_LIFE = get_cfg_var("session.gc_maxlifetime");
//$SESSION_LIFE = 1440;function sess_open ($save_path, $session_name)
{
global $sess_save_path, $sess_session_name; $sess_save_path = $save_path;
$sess_session_name = $session_name;
return(true);
}function sess_close()
{
return(true);
}function sess_read ($key)
{
global $sess_save_path, $sess_session_name, $SESSION_LIFE, $sqlca; $query = "SELECT session_value FROM ts_sessions WHERE session_key = '$key' AND session_expiry > " . time();
//echo "query='$query'<br>";
$sqlca->query($query); if ($sqlca->next_record())
{
return $sqlca->f(0);
}
else
{
return("");
}
}function sess_write ($key, $val)
{
global $sess_save_path, $sess_session_name, $SESSION_LIFE, $sqlca;
$expiry = time() + $SESSION_LIFE;
//$value = addslashes($val);
$value = $val; $sqlca->query("SELECT session_key,session_expiry FROM ts_sessions WHERE session_key='$key'");
if($sqlca->next_record())
{
$query = "UPDATE ts_sessions SET session_value = '$value', session_expiry = $expiry WHERE session_key = '$key' AND session_expiry > " . time();
}
else
{
$query = "INSERT ts_sessions VALUES('$key', '$value', $expiry)";
} //echo "query='$query'<br>";
$sqlca->query($query); return $sqlca->Query_ID;
}function sess_update_time ($key)
{
global $SESSION_LIFE, $sqlca; $expiry = time() + $SESSION_LIFE; $query = "UPDATE ts_sessions SET session_expiry = $expiry WHERE session_key = '$key'";
return $sqlca->query($query);
}function sess_destroy ($key)
{
global $sqlca; $query = "DELETE FROM ts_sessions WHERE session_key = '$key'";
$sqlca->query($query); return $sqlca->Query_ID;
}function sess_gc ($maxlifetime)
{
global $sqlca; $query = "DELETE FROM ts_sessions WHERE session_expiry < " . time();
$sqlca->query($query); return $sqlca->Query_ID;
}session_set_save_handler ("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
session_start();
网上有php session的监听代码,可是不知道放在哪里,怎么使用....session_set_save_handler $SESSION_LIFE = get_cfg_var("session.gc_maxlifetime");
//$SESSION_LIFE = 1440;function sess_open ($save_path, $session_name)
{
global $sess_save_path, $sess_session_name; $sess_save_path = $save_path;
$sess_session_name = $session_name;
return(true);
}function sess_close()
{
return(true);
}function sess_read ($key)
{
global $sess_save_path, $sess_session_name, $SESSION_LIFE, $sqlca; $query = "SELECT session_value FROM ts_sessions WHERE session_key = '$key' AND session_expiry > " . time();
//echo "query='$query'<br>";
$sqlca->query($query); if ($sqlca->next_record())
{
return $sqlca->f(0);
}
else
{
return("");
}
}function sess_write ($key, $val)
{
global $sess_save_path, $sess_session_name, $SESSION_LIFE, $sqlca;
$expiry = time() + $SESSION_LIFE;
//$value = addslashes($val);
$value = $val; $sqlca->query("SELECT session_key,session_expiry FROM ts_sessions WHERE session_key='$key'");
if($sqlca->next_record())
{
$query = "UPDATE ts_sessions SET session_value = '$value', session_expiry = $expiry WHERE session_key = '$key' AND session_expiry > " . time();
}
else
{
$query = "INSERT ts_sessions VALUES('$key', '$value', $expiry)";
} //echo "query='$query'<br>";
$sqlca->query($query); return $sqlca->Query_ID;
}function sess_update_time ($key)
{
global $SESSION_LIFE, $sqlca; $expiry = time() + $SESSION_LIFE; $query = "UPDATE ts_sessions SET session_expiry = $expiry WHERE session_key = '$key'";
return $sqlca->query($query);
}function sess_destroy ($key)
{
global $sqlca; $query = "DELETE FROM ts_sessions WHERE session_key = '$key'";
$sqlca->query($query); return $sqlca->Query_ID;
}function sess_gc ($maxlifetime)
{
global $sqlca; $query = "DELETE FROM ts_sessions WHERE session_expiry < " . time();
$sqlca->query($query); return $sqlca->Query_ID;
}session_set_save_handler ("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
session_start();
session_set_save_handler ("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");session_set_save_handler中每个参数都是对应session每个事件的处理函数,比如要处理session关闭事件,你应该有一个函数叫做sess_close,在这个函数里面处理要做的事情。代码放在程序已开始就可以了。
那么那一大段代码要单独写在一个php页面里么?
另外在sess_close还能使用$_SESSION["username"]这样的原来session里的参数么?
这一句报错了,是什么意思啊?
syntax error, unexpected T_VARIABLE
注意这个代码是将 session 保存于数据库时用的其中 sess_close 函数只在显式的执行了 session_destroy 或 session_unset 事被调用, 你给出的代码中只返回了 true,没做其他事情sess_gc 函数完成的是垃圾清理过程,可在此添加你对失效 session 的处理代码
你们的存在是像我这样的新手的幸福...诚心感谢你们!!!