【发布时间】:2010-06-22 11:30:21
【问题描述】:
我正在尝试使用 session_set_save_handler 来允许我使用下面的代码在 mySQL 数据库中保存会话。
每次我尝试加载页面时都会收到关于 httpd.exe 的应用程序错误,如下图所示。
http://i48.tinypic.com/2i9l2ip.jpg
如果我删除以下行,页面就可以正常工作。
session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
我猜这意味着我的代码中某处有错误,但我什么也看不到。任何帮助将不胜感激,谢谢。
function sess_open($sess_path, $sess_name) {
return true;
}
function sess_close() {
return true;
}
function sess_read($sess_id) {
$result = dbQuery("SELECT data FROM sessions WHERE id = '$sess_id';");
if (!mysqli_num_rows($result)) {
$CurrentTime = time();
$result = dbQuery("INSERT INTO sessions (id, access) VALUES ('$sess_id', '$CurrentTime');");
return '';
} else {
extract(mysqli_fetch_array($result), EXTR_PREFIX_ALL, 'sess');
$result = dbQuery("UPDATE sessions SET access = '$CurrentTime' WHERE id = '$sess_id';");
return $sess_data;
}
}
function sess_write($sess_id, $data) {
$CurrentTime = time();
$result = dbQuery("UPDATE sessions SET data = '$data', access = '$CurrentTime' WHERE id = '$sess_id';");
return true;
}
function sess_destroy($sess_id) {
$result = dbQuery("DELETE FROM sessions WHERE id = '$sess_id';");
return true;
}
function sess_gc($sess_maxlifetime) {
$CurrentTime = time();
$result = dbQuery("DELETE FROM sessions WHERE access + $sess_maxlifetime < $CurrentTime;");
return true;
}
session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");
session_start();
【问题讨论】: