|  					<?phpdefine(‘MY_SESS_TIME‘, 3600); //SESSION 生存时长
 //类定义
 class My_Sess
 {
 function init()
 {
 $domain = ‘.infor96.com‘;
 //不使用 GET/POST 变量方式
 ini_set(‘session.use_trans_sid‘, 0);
 //设置垃圾回收最大生存时间
 ini_set(‘session.gc_maxlifetime‘, MY_SESS_TIME);
  					//使用 COOKIE 保存 SESSION ID 的方式ini_set(‘session.use_cookies‘, 1);
 ini_set(‘session.cookie_path‘, ‘/‘);
 //多主机共享保存 SESSION ID 的 COOKIE
 ini_set(‘session.cookie_domain‘, $domain);
  					//将 session.save_handler 设置为 user,而不是默认的 filessession_module_name(‘user‘);
 //定义 SESSION 各项操作所对应的方法名:
 session_set_save_handler(
 array(‘My_Sess‘, ‘open‘), //对应于静态方法 My_Sess::open(),下同。
 array(‘My_Sess‘, ‘close‘),
 array(‘My_Sess‘, ‘read‘),
 array(‘My_Sess‘, ‘write‘),
 array(‘My_Sess‘, ‘destroy‘),
 array(‘My_Sess‘, ‘gc‘)
 );
 } //end function
 function open($save_path, $session_name) {
 return true;
 } //end function
 function close() {
 global $MY_SESS_CONN;
  					if ($MY_SESS_CONN) { //关闭数据库连接$MY_SESS_CONN->Close();
 }
 return true;
 } //end function
 function read($sesskey) {
 global $MY_SESS_CONN;
  					$sql = ‘SELECT data FROM sess WHERE sesskey=‘ . $MY_SESS_CONN->qstr($sesskey) . ‘ AND expiry>=‘ . time();$rs =& $MY_SESS_CONN->Execute($sql);
 if ($rs) {
 if ($rs->EOF) {
 return ”;
 } else { //读取到对应于 SESSION ID 的 SESSION 数据
 $v = $rs->fields[0];
 $rs->Close();
 return $v;
 } //end if
 } //end if
 return ”;
 } //end function
 function write($sesskey, $data) {
 global $MY_SESS_CONN;
  					$qkey = $MY_SESS_CONN->qstr($sesskey);$expiry = time() + My_SESS_TIME; //设置过期时间
 //写入 SESSION
 $arr = array(
 ‘sesskey‘ => $qkey,
 ‘expiry‘ => $expiry,
 ‘data‘ => $data);
 $MY_SESS_CONN->Replace(‘sess‘, $arr, ‘sesskey‘, $autoQuote = true);
 return true;
 } //end function
 function destroy($sesskey) {
 global $MY_SESS_CONN;
  					$sql = ‘DELETE FROM sess WHERE sesskey=‘ . $MY_SESS_CONN->qstr($sesskey);$rs =& $MY_SESS_CONN->Execute($sql);
 return true;
 } //end function
 function gc($maxlifetime = null) {
 global $MY_SESS_CONN;
  					$sql = ‘DELETE FROM sess WHERE expiry< ‘ . time();$MY_SESS_CONN->Execute($sql);
 //由于经常性的对表 sess 做删除操作,容易产生碎片,
 //所以在垃圾回收中对该表进行优化操作。
 $sql = ‘OPTIMIZE TABLE sess‘;
 $MY_SESS_CONN->Execute($sql);
 return true;
 } //end function
 } ///:~
 //使用 ADOdb 作为数据库抽象层。
 require_once(‘adodb/adodb.inc.php‘);
 //数据库配置项,可放入配置文件中(如:config.inc.php)。
 $db_type = ‘mysql‘;
 $db_host = ‘192.168.212.1‘;
 $db_user = ‘sess_user‘;
 $db_pass = ‘sess_pass‘;
 $db_name = ‘sess_db‘;
 //创建数据库连接,这是一个全局变量。
 $GLOBALS['MY_SESS_CONN'] =& ADONewConnection($db_type);
 $GLOBALS['MY_SESS_CONN']->Connect( $db_host, $db_user, $db_pass, $db_name);
 //初始化 SESSION 设置,必须在 session_start() 之前运行!!
 My_Sess::init();
 ?>
 |