您的位置:首页技术文章
文章详情页

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

【字号: 日期:2023-10-26 19:33:49浏览:67作者:猪猪

<? $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(); ?>

标签: MySQL 数据库