session入库

/ 重写 session 的存储机制

// 最重要的三个函数: read,write,destroy。
// 有了这几个就能完成 session 功能。
// 其他的函数的函数体可以什么都不写。

function sess_open(){
  echo__FUNCTION__;
  $link =mysql_connect('127.0.0.1', 'root', '');
  mysql_query('set namesutf8');
  mysql_query('usestudy');
}

function sess_close(){
  echo__FUNCTION__;
}

functionsess_read($sess_id){
  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'';
  }
}

function sess_write($sess_id,$sess_data){
  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);
}

functionsess_destroy($sess_id){
  echo__FUNCTION__;
  $sql = "delete from`session` where sess_id ='$sess_id'"; 
  returnmysql_query($sql);
}
function sess_gc(){
  echo__FUNCTION__;
}

session_set_save_handler(
 'sess_open', 
 'sess_close',
 'sess_read',
 'sess_write',
 'sess_destroy',
 'sess_gc'
);

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文件中。如果执行过,那么什么也不做。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值