轻松实现session的mysql处理

王朝mysql·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

通常,session都是保存在临时文件里的,但是,要是把它保存在数据库里,就会给我们带来很多好处,比如统计在线人数之类的。废话不说了,看程序:

<?php

include("db_mysql.inc");

function open ($save_path, $session_name) {

global $db,$REMOTE_ADDR;

$db->query("delete from Sessions where SessionLast<date_sub(now(),interval

1 hour)");

if($db->query("select * from Sessions where SessionID='".session_id()."'")

&& $arry=$db->fetch_array())

$db->query("update Sessions set SessionLast=NOW() where

SessionID='".session_id()."'");

else $db->query("insert into Sessions set

SessionID='".session_id()."',SessionName='$REMOTE_ADDR',SessionLast='NOW()'"

);

return(true);

}

function close()

return true;

}

function read ($id) {

global $db;

if(!$db->query("select SessionID from Sessions where SessionID='$id'")

|| $db->num_rows()<=0)return false;

$SQL="select SessionData from Sessions where SessionID='$id'";

$db->query($SQL);

list($sess_data)=$db->fetch_row();

return($sess_data);

}

function write ($id, $sess_data) {

global $db;

if(!$db->query("select SessionID from Sessions where SessionID='$id'") ||

$db->num_rows()<=0)return false;

if($db->query("update Sessions set

SessionData='$sess_data',SessionLast=NOW() where SessionID='$id'"))

return true;

else return false;

}

function destroy ($id) {

global $db;

$db->query("delete from Sessions where SessionID='$id'");

}

function gc ($maxlifetime) {

return true;

}

session_set_save_handler ("open", "close", "read", "write", "destroy","gc");

session_start();

?>

注:

数据表:Sessions

CREATE TABLE Sessions (

SessionID varchar(50) NOT NULL,

SessionName varchar(50) NOT NULL,

SessionData blob,

SessionLast datetime DEFAULT '0000-00-00 00:00:00' NOT NULL,

PRIMARY KEY (SessionID)

);

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航