修改session的存储机制
? <?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);
轉載于:https://www.cnblogs.com/jiangu66/p/3241334.html
總結
以上是生活随笔為你收集整理的修改session的存储机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]Windows Shell 编程
- 下一篇: Httpclient 实现带参文件上传