session入库php7,SESSION存放在数据库用法实例

/*

CREATE TABLE `ws_sessions` (

`session_id` varchar(255) binary NOT NULL default '',

`session_expires` int(10) unsigned NOT NULL default '0',

`session_data` text,

PRIMARY KEY (`session_id`)

) TYPE=InnoDB;

*/

class session {

// session-lifetime

var $lifeTime;

// mysql-handle

var $dbHandle;

function open($savePath, $sessName) {

// get session-lifetime

$this->lifeTime = get_cfg_var("session.gc_maxlifetime");

// open database-connection

$dbHandle = @mysql_connect("localhost","root","");

$dbSel = @mysql_select_db("test",$dbHandle);

// return success

if(!$dbHandle || !$dbSel)

return false;

$this->dbHandle = $dbHandle;

return true;

}

function close() {

$this->gc(ini_get('session.gc_maxlifetime'));

// close database-connection

return @mysql_close($this->dbHandle);

}

function read($sessID) {

// fetch session-data

$res = mysql_query("SELECT session_data AS d FROM ws_sessions

WHERE session_id = '$sessID'

AND session_expires > ".time(),$this->dbHandle);

// return data or an empty string at failure

if($row = mysql_fetch_assoc($res))

return $row['d'];

return "";

}

function write($sessID,$sessData) {

// new session-expire-time

$newExp = time() + $this->lifeTime;

// is a session with this id in the database?

$res = mysql_query("SELECT * FROM ws_sessions

WHERE session_id = '$sessID'",$this->dbHandle);

// if yes,

if(mysql_num_rows($res)) {

// ...update session-data

mysql_query("UPDATE ws_sessions

SET session_expires = '$newExp',

session_data = '$sessData'

WHERE session_id = '$sessID'",$this->dbHandle);

// if something happened, return true

if(mysql_affected_rows($this->dbHandle))

return true;

}

// if no session-data was found,

else {

// create a new row

mysql_query("INSERT INTO ws_sessions (

session_id,

session_expires,

session_data)

VALUES(

'$sessID',

'$newExp',

'$sessData')",$this->dbHandle);

// if row was created, return true

if(mysql_affected_rows($this->dbHandle))

return true;

}

// an unknown error occured

return false;

}

function destroy($sessID) {

// delete session-data

mysql_query("DELETE FROM ws_sessions WHERE session_id = '$sessID'",$this->dbHandle);

// if session was deleted, return true,

if(mysql_affected_rows($this->dbHandle))

return true;

// ...else return false

return false;

}

function gc($sessMaxLifeTime) {

// delete old sessions

mysql_query("DELETE FROM ws_sessions WHERE session_expires < ".time(),$this->dbHandle);

// return affected rows

return mysql_affected_rows($this->dbHandle);

}

}

$session = new session();

session_set_save_handler(array(&$session,"open"),

array(&$session,"close"),

array(&$session,"read"),

array(&$session,"write"),

array(&$session,"destroy"),

array(&$session,"gc"));

session_start();

// etc...

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值