找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 263|回复: 0
打印 上一主题 下一主题

使用数据库保存session的方法

[复制链接]

2617

主题

2617

帖子

7789

积分

论坛元老

Rank: 8Rank: 8

积分
7789
跳转到指定楼层
楼主
发表于 2018-2-14 09:41:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            php的session默认是以文件方式保存在服务器端,并且在客户端使用cookie保存变量,这就会出现一个问题,当一个用户由于某种安全原因关闭了浏览器的cookie,程序中的session相关操作将无法执行。因此,如果能以数据库保存session数据,将不受客户端设置的限制,并且在性能和扩展性等方面有一个飞跃。程序中使用关键函数是session_set_save_handler,同时要将php.ini里的session.save_handler = files 改为 user。这里我们讨论的环境是linux(freesd)+apache+mysql+php。
数据表结构:[sessions]
CREATE TABLE sessions (  
sesskey char(32) not null,  
expiry int(11) unsigned not null,  
value text not null,  
PRIMARY KEY (sesskey)  
);
程序代码:[session_inc.php]
" . time();
    $qid = mysql_query($qry, $SESS_DBH);
    if (list($value) = mysql_fetch_row($qid)) {
        return $value;
    }
    return false;
}
function sess_write($key, $val) {
    global $SESS_DBH, $SESS_LIFE;
    $expiry = time() + $SESS_LIFE; //过期时间
    $value = addslashes($val);
    $qry = "INSERT INTO session_tbl VALUES ('$key', $expiry, '$value')";
    $qid = mysql_query($qry, $SESS_DBH);
    if (! $qid) {
        $qry = "UPDATE session_tbl SET expiry = $expiry, value = '$value' WHERE sesskey = '$key' AND expiry > " . time();
        $qid = mysql_query($qry, $SESS_DBH);
    }
    return $qid;
}
function sess_destroy($key) {
    global $SESS_DBH;
    $qry = "DELETE FROM session_tbl WHERE sesskey = '$key'";
    $qid = mysql_query($qry, $SESS_DBH);
    return $qid;
}
function sess_gc($maxlifetime) {
    global $SESS_DBH;
    $qry = "DELETE FROM session_tbl WHERE expiry  
完成以上步骤后,在程序中使用require("session_inc.php")来代替session_start()即可,其他的session函数还是象以前一样的方法调用。
【本文版权归作者与奥索网共同拥有,如需转载,请注明作者及出处】   
            
            
您可能感兴趣的文章:
  • PHP用mysql数据库存储session的代码
  • Session保存到数据库的php类分享
  • 探讨如何把session存入数据库
  • php把session写入数据库示例
  • PHP独立Session数据库存储操作类分享
  • PHP将session信息存储到数据库的类实例
  • php实现将Session写入数据库
  • php基于session实现数据库交互的类实例
  • SESSION存放在数据库用法实例
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端