UTF.COM.CN

使用session_set_save_handler函数重载SESSION存储方式之MYSQL

作者:佚名 | 来源:网络 | 添加时间:2007-03-29 17:45:19 | 人气:1376

使用session_set_save_handler函数重载SESSION存储方式之MYSQL

<? 
$DB_SERVER 
"server"/* database server hostname */ 
$DB_NAME "dbname"/* database name */ 
$DB_USER "root"/* database user */ 
$DB_PASS "*************"/* database password */ 
 
$DB_SELECT_DB ""
$SESS_LIFE get_cfg_var("session.gc_maxlifetime"); 
 
function 
sess_open($save_path$session_name) { 
global 
$DB_SERVER$DB_NAME$DB_USER$DB_PASS$DB_SELECT_DB
 
if (! 
$DB_SELECT_DB mysql_pconnect($DB_SERVER$DB_USER$DB_PASS)) { 
echo 
"SORRY! MYSQL ERROR : Can't connect to $DB_SERVER as $DB_USER"
echo 
"MySQL Error: "mysql_error(); 
die; 

 
if (! 
mysql_select_db($DB_NAME$DB_SELECT_DB)) { 
echo 
"SORRY! MYSQL ERROR : Unable to select database $DB_NAME"
die; 

 
return 
true

 
function 
sess_close() { 
return 
true

 
function 
sess_read($SessionKey){ 
global 
$DB_SELECT_DB$SESS_LIFE
$Query "SELECT SessionArray FROM cdb_global_sessions WHERE SessionKey = '".$SessionKey."' AND SessionExpTime > " time(); 
$Result mysql_query($Query$DB_SELECT_DB); 
 
if (list(
$SessionArray) = mysql_fetch_row($Result)) { 
return 
$SessionArray

 
return 
false

 
function 
sess_write($SessionKey$VArray) { 
global 
$DB_SELECT_DB$SESS_LIFE
 
$SessionExpTime time() + $SESS_LIFE
$SessionArray addslashes($VArray); 
 
$Query "INSERT INTO cdb_global_sessions (SessionKey,SessionExpTime,SessionArray) VALUES ('".$SessionKey."','".$SessionExpTime."','".$SessionArray."')"
$Result mysql_query($Query$DB_SELECT_DB); 
 
if (!
$Result){ 
$Query "UPDATE cdb_global_sessions SET SessionExpTime = '".$SessionExpTime."', SessionArray = '".$SessionArray."' WHERE SessionKey = '".$SessionKey."' AND SessionExpTime > " time(); 
$Result mysql_query($Query$DB_SELECT_DB); 

return 
$Result

 
function 
sess_destroy($SessionKey) { 
global 
$DB_SELECT_DB
 
$Query "DELETE FROM cdb_global_sessions WHERE SessionKey = '".$SessionKey."'"
$Result mysql_query($Query$DB_SELECT_DB); 
 
return 
$Result

 
function 
sess_gc($maxlifetime) { 
global 
$DB_SELECT_DB
 
$Query "DELETE FROM cdb_global_sessions WHERE SessionExpTime < " time(); 
$Result mysql_query($Query$DB_SELECT_DB); 
 
return 
mysql_affected_rows($DB_SELECT_DB); 

 
session_set_save_handler
"sess_open"
"sess_close"
"sess_read"
"sess_write"
"sess_destroy"
"sess_gc");
session_start();
?>
责任编辑:冬天来了
【字号: 】【去论坛讨论】【发表评论】【打印本文】【告诉好友】【关闭窗口
网友评论(评论内容只代表网友观点,与本站立场无关!)

姓名:

验证码: 点击刷新