解析php session_set_save_handler 函数的用法(mysql)

  次阅读 作者:智能小宝 来源:互联网 2016-03-02 15:27 我要评论(0)

本篇文章是对php中session_set_save_handler 函数的用法(mysql)进行了详细的分析介绍,需要的朋友参考下

复制代码 代码如下:

<?php

/*============================文件说明========================================

@filename:session.class.php

@description:数据库保存在线用户session,实现在线用户功能!

@notice:session过期时间一个小时,因为我们的站点是使用cookie(有效时间是1小时)登录。

因此我们只记录用户登录的时间,而不是刷新一次更新一次

删除数据库中session记录的动作发生在用户超时后执行这个文件或正常退出(session_destory)

@database:database:sessionsfield:sessionid(char32),uid(int10),last_visit(int10)

=============================================================================

*/

class session {

private $db;

private $lasttime=3600;//超时时间:一个小时

function session(&$db) {

$this->db = &$db;

session_module_name('user'); //session文件保存方式,这个是必须的!除非在Php.ini文件中设置了

session_set_save_handler(

array(&$this, 'open'), //在运行session_start()时执行

array(&$this, 'close'), //在脚本执行完成或调用session_write_close() 或 session_destroy()时被执行,即在所有session操作完后被执行

array(&$this, 'read'), //在运行session_start()时执行,因为在session_start时,会去read当前session数据

array(&$this, 'write'), //此方法在脚本结束和使用session_write_close()强制提交SESSION数据时执行

array(&$this, 'destroy'), //在运行session_destroy()时执行

array(&$this, 'gc') //执行概率由session.gc_probability 和session.gc_divisor的值决定,时机是在open,read之后,session_start会相继执行open,read和gc

);

session_start(); //这也是必须的,打开session,必须在session_set_save_handler后面执行

}

function unserializes($data_value) {

$vars = preg_split(

'/([a-zA-Z_x7f-xff][a-zA-Z0-9_x7f-xff]*)|/',

$data_value, -1, PREG_SPLIT_NO_EMPTY |

PREG_SPLIT_DELIM_CAPTURE

);

for ($i = 0; isset($vars[$i]); $i++) {

$result[$vars[$i++]] = unserialize($vars[$i]);

}

return $result;

}

function open($path, $name) {

return true;

}

function close() {

$this->gc($this->lasttime);

return true;

}

function read($SessionKey){

$sql = "SELECT uid FROM sessions WHERE session_id = '".$SessionKey."' limit 1";

$query =$this->db->query($sql);

if($row=$this->db->fetch_array($query)){

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...