/ 重写 session 的存储机制
echo__FUNCTION__;
$link =mysql_connect('127.0.0.1', 'root', '');
mysql_query('set namesutf8');
mysql_query('usestudy');
echo__FUNCTION__;
echo__FUNCTION__;
$sql = "select sess_datafrom `session` where sess_id = '$sess_id'";
$result =mysql_query($sql); // $link可以自己找到,或可以声明为全局变量
if($rows =mysql_fetch_assoc($result)){
return$rows['sess_data'];
}else{
return'';
}
echo__FUNCTION__;
//当前 session 存在则更新sess_data
//获得时间戳,mysql函数:unix_timestamp();
//获得时间戳,php函数:time();
$sql = "insert into`session` values('$sess_id', '$sess_data',now())
on duplicate key updatesess_data = '$sess_data',times = now()"; //这是为了gc()
returnmysql_query($sql);
echo__FUNCTION__;
$sql = "delete from`session` where sess_id ='$sess_id'";
returnmysql_query($sql);
echo__FUNCTION__;
'sess_open',
'sess_close',
'sess_read',
'sess_write',
'sess_destroy',
'sess_gc'
// 最重要的三个函数: read,write,destroy。
// 有了这几个就能完成 session 功能。
// 其他的函数的函数体可以什么都不写。
function sess_open(){
}
function sess_close(){
}
functionsess_read($sess_id){
}
function sess_write($sess_id,$sess_data){
}
functionsess_destroy($sess_id){
}
function sess_gc(){
}
session_set_save_handler(
);
session_start();
var_dump($_SESSION);
$_SESSION['name'] = 'fff';
$_SESSION['age'] = '24';
//session_destroy();
——————————————————————————
总结 session 运行机制:
1. 打开 session 时,语法上执行函数 session_start() ,php 的session 机制读取浏览器端的 cookie,语法上表示为$_cookie['PHPSESSID']。
2. 根据 cookie 找到存储在服务器端的 session数据。
3. 把 session 数据反序列化,赋值给变量 $_SESSION。
4. 之后对变量 $_SESSION 的操作都是对变量的操作,不会更新 session文件。
5. 是否执行了 session_destroy() 函数,如果执行了,那么删除服务器端的session 文件。
6. 脚本结束时,判断是否有 sessin 文件,或者说是否执行过session_destroy() 方法。如果没有执行过,则把 $_SESSION 变量中的数据写入到 session文件中。如果执行过,那么什么也不做。