重载session存储方式–session_set_save_handler()
<?php???
???$DB_SERVER = “l(fā)ocalhost”;
???$DB_NAME = “session_global”;
???$DB_USER = “root”;
???$DB_PASS = “root”;
???
???$DB_SELECT_DB = “”;
???//獲取session的配置文件中session最大時長的參數(shù)。
???$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();
?>
總結(jié)
以上是生活随笔為你收集整理的重载session存储方式–session_set_save_handler()的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用PHP打印出前一天的时间
- 下一篇: Linux下开启/关闭防火墙命令