<?
$SESS_DBHOST = "localhost"; // mysql主机
$SESS_DBNAME = "db"; // 数据库名称
$SESS_DBUSER = "root"; // 数据库用户
$SESS_DBPASS = ""; // 数据库密码$SESS_DBH = "";
$SESS_LIFE = get_cfg_var("session.gc_maxlifetime"); 
   
function sess_open($save_path, $session_name) { 
  global $SESS_DBHOST, $SESS_DBNAME, $SESS_DBUSER, $SESS_DBPASS, $SESS_DBH; 
   
  if (! $SESS_DBH = mysql_connect($SESS_DBHOST, $SESS_DBUSER, $SESS_DBPASS)) {
    echo "<li>Can't connect to $SESS_DBHOST as $SESS_DBUSER"; 
    echo "<li>MySQL Error: ", mysql_error(); 
    die; 
  }
   
  if (! mysql_select_db($SESS_DBNAME, $SESS_DBH)) { 
    echo "<li>Unable to select database $SESS_DBNAME"; 
    die; 
  } 
  return true; 

   
function sess_close() { 
  return true; 

   
function sess_read($key) { 
  global $SESS_DBH, $SESS_LIFE; 
   
  $qry = "SELECT value FROM sessions WHERE sesskey = '$key' AND expiry > " . time(); 
  $qid = mysql_query($qry, $SESS_DBH); 
   
  if (list($value) = mysql_fetch_row($qid)) { 
    return $value; 
  }   return false; 

   
function sess_write($key, $val) { 
  global $SESS_DBH, $SESS_LIFE; 
   
  $expiry = time() + $SESS_LIFE; 
  $value = addslashes($val); 
   
  $qry = "REPLACE INTO sessions VALUES ('$key', $expiry, '$value')"; 
  $qid = mysql_query($qry, $SESS_DBH); 
  return $qid; 

   
function sess_destroy($key) { 
  global $SESS_DBH; 
   
  $qry = "DELETE FROM sessions WHERE sesskey = '$key'"; 
  $qid = mysql_query($qry, $SESS_DBH); 
   
  return $qid; 

   
function sess_gc($maxlifetime) { 
  global $SESS_DBH,$SESS_LIFE;
   
  $qry = "DELETE FROM sessions WHERE expiry < " . time(); 
  $qid = mysql_query($qry, $SESS_DBH); 
   
  return mysql_affected_rows($SESS_DBH); 
}
   
session_set_save_handler( 
  "sess_open", 
  "sess_close", 
  "sess_read", 
  "sess_write", 
  "sess_destroy", 
  "sess_gc"); 
?>
#
# 数据表的结构 `sessions`
#CREATE TABLE sessions (
  sesskey varchar(32) NOT NULL default '',
  expiry int(11) unsigned NOT NULL default '0',
  value text NOT NULL,
  PRIMARY KEY  (sesskey)
) TYPE=MyISAM;由此,我们可以扩展出许多有用的功能