Home > php教程 > php手册 > body text

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

WBOY
Release: 2016-06-13 10:35:02
Original
790 people have browsed it


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

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Recommendations
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!