PHP操纵session存入数据库

1 为什么需要session入库

  当session中数据很多时,或者web服务器集群共享session时,就需要将session存入数据库

  session存入数据库一般是要重写session存储机制,具体实现主要通过:

  a  自定义相关session函数

  b  创建session表

  c  重写session函数

数据表如下:

    

在session.php中重写存储机制

    

<?php

//session重写存储机制

function sessionBegin(){
    $link = @mysql_connect('127.0.0.1:3306','root','root');
    mysql_query('set names utf8');
    mysql_query('use `demo`');
}

function sessionEnd(){
    return true;
}

function sessionRead($session_id){
    $sql = "select session_content from session where session_id='$session_id'";
    $result = mysql_query($sql);
    if($row = mysql_fetch_assoc($result)){
        return $row['session_content'];
    }else{
        return '';
    }
}

function sessionWrite($session_id,$session_content){
    $sql = "replace into session values('$session_id','$session_content',unix_timestamp())";
    return mysql_query($sql);
}

function sessionDelete($session_id){
    $sql = "delete from session where session_id = '$session_id'";
    return mysql_query($sql);
}

function sessionGC($max_lifetime){
    $sql = "delete from session where last_time<unix_timestamp()-$max_lifetime";
    return mysql_query($sql);
}

session_set_save_handler(
    'sessionBegin',
    'sessionEnd',
    'sessionRead',
    'sessionWrite',
    'sessionDelete',
    'sessionGC'
);

ini_set('session.save_handle','user');

在其他php文件中引入session.php,就可以操作session存入数据库了

 1 <?php
 2 header('content-type:text/html;charset=utf-8');
 3 
 4 require 'session.php';
 5 session_start();
 6 
 7 // $_SESSION['name'] = 'zhaoyun';
 8 
 9 // $_SESSION['obj'] = new stdClass;
10 
11 // echo '添加成功'.session_id();
12 echo '<pre>';
13 var_dump($_SESSION);

 

posted @ 2016-12-11 17:48  少年飞刀  阅读(1512)  评论(0编辑  收藏  举报