入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

修改session的存储机制

创建时间:2013-08-05 投稿人: 浏览次数:982
  <?php 
//修改session的存储机制

//最起码应该有一个 读方法, 和一个 写方法。


//1, 我们先去建立 读方法 和 写方法。
//2, 告知session系统,使用我们的方法完成数据的读和写操作。


//建立读方法
/**
 * 利用 sessionID 获得session数据
 *@param $sess_id string 当前会话的ID
 *@return string 当前的sessiondata (不需要考虑序列化与反序列化的问题)
 */
function sess_read($sess_id) {
    echo "read";
    //查询的sql语句
    $query = "select sess_data from sessions where sess_id="{$sess_id}"";
    $result = mysql_query($query);
    $row = mysql_fetch_assoc($result);
    //返回查询到的数据
    return $row["sess_data"];


}


//写方法
/**
 * @param $sess_id string 当前的sessionID
 * @param $sess_data string 当前的session数据,(序列化好的)
 */
function sess_write($sess_id, $sess_data) {
    echo "write";
    //应该考虑到 当前的session记录是否存在
    //存在应该update更新,不存在应该insert新建
    $expire = time();
    $query = "insert into sessions values ("{$sess_id}", "{$sess_data}", {$expire}) on duplicate key update sess_data="{$sess_data}", expire={$expire}";
    return mysql_query($query);


}


/**
 *session_start 是执行的方法,用户初始化资源
 * @param $save_path string php.ini中 session.save_path 的值。
 * @param $sess_name string php.ini中 session.name 的值。ini_get()也可以获得。
 *  这2参数就是php.ini文件中对应的值---可以输出看看
 */
function sess_open($save_path, $sess_name) {//这2个参数可以不写
    echo "open";
    //连接上数据库  其他几个函数都可以用这个链接不会涉及到作用于的问题
    $link = mysql_connect("localhost", "root", "1234abcd");
    mysql_query("use test", $link);
    mysql_query("set names utf8");
}


/**
 *在最后,释放资源的方法
 */
function sess_close() {
//    echo "close";
    mysql_close();
}
/**
 * @param $sess_id string 当前的sessionID
 */
function sess_destroy($sess_id){
    echo "destroy";
    $query = "delete from sessions where sess_id="{$sess_id}"";
    return mysql_query($query);


}
/**
 *负责回收垃圾的函数
 *@param $ttl 当前的session数据的最大生存周期
 */
function sess_gc($ttl) {
    //
//    echo "gc";
    $expire = time() - $ttl;
    $query = "delete from sessions where expire < {$expire}";


    return mysql_query($query);


}


//将我们的方法 告知给当前的session系统
//利用函数 session_set_save_handler();
session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc");




//开启session


session_start();


$_SESSION["name"] = "leyangjun";


$_SESSION["age"] = "23";


unset($_SESSION["name"]);
//session_destroy();


//var_dump($_SESSION);
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。