session入库

session入库,就是重写session制机,在session的周期内,获得到session的数据并记录到数据库

Session默认是存放到服务器上的文件中,不方便管理,如果能把session存放到数据库中就可以方便的对数据库进行管理了

比如:

 *   1可以解决不同平台多服务器间session数据共享

 *   2可以统计在线人数

 *   3可以踢出在线用户

 *   4可以实现同一时只允许一个用户在线


 使用步骤

第一步:php.ini配置文件中设置session.save_handler = user 或者用ini_set设置ini_set('session.save_handler','user');

第二步:创建一个存放session的数据表

sesssion_id用于存放session_id,字段类型为字符型,长度为32

session_value用于存放session的内容,字段类型为text

session_MaxLifeTime用于存放session的生存期


第三步:设置session的处理器,自动调用六个回调函数

session_set_save_handler ( callback $open , callback $close , callback $read , callback $write , callback $destroy , callback $gc )


ini_set("session.save_handler", "user");

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

function open () {
    // 打开数据库链接  连接数据库
    $link = mysql_connect("127.0.0.1", "root", "root");
    mysql_select_db("test", $link);
    mysql_query("set names utf8");
}
function close() {
    // 关闭数据库链接
    mysql_close();
}
function read($session_id) {
    // 从表中中读信息
    $read = mysql_query("select * from session where session_id='{$session_id}'");
    $return = mysql_fetch_assoc($read);
    return $return["session_info"];
}
function write ($session_id, $session_info) {
    // echo $session_id. "        " . $session_info;
    // 讲session存入数据库
    $read = mysql_query("select * from session where session_id='{$session_id}'");
    $info = mysql_fetch_assoc($read);
    if (empty($info)) {
        $time = time();
        mysql_query("insert into session (session_id, session_info, session_time) values ('{$session_id}', '{$session_info}', '{$time}')");
    } else {
        $sql = "update session set session_info='{$session_info}' where session_id='{$session_id}'";
        mysql_query($sql);
    }
}
function destroy($session_id) {
    // 销毁指定session
    mysql_query("delete from session where session_id='{$session_id}'");
}
function gc() {
    // 删除所有过期的session
}

接下来我们在开启session后 设置session值 或者取session值 session就会入库了。

比较 简单 ,勿喷


  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值