php开发教程更改会话存储(session入库) 
 
1,知识点 
- a)通过session_set_save_handler()更改存储
 
 - b)session_set_save_handler()必须在session_start()之前
 
 - c)有6个回调函数,open,close,read,write,destroy,gc。
 
 - 4)read必须返回字符串,其他函数返回bool值
 
  
- 6个回调函数执行的时间:
 
 - open():开启会话执行
 
 - close():关闭会话执行
 
 - read():打开会话后就执行
 
 - write():更改会话会话的值和关闭会话之前执行,如果调用了session_destroy()就不会调用write()
 
 - destroy():调用session_destroy()的时候自动执行
 
 - gc():垃圾回收的时候自动执行。
 
  复制代码 2、代码实现 
 
- <?php
 
 - //打开会话
 
 - function open() {
 
 -         global $link;
 
 -         $link=mysqli_connect('localhost','root','root','data');
 
 -         mysqli_set_charset($link,'utf8');
 
 -         return true;
 
 - }
 
 - //关闭会话
 
 - function close() {
 
 -         return true;
 
 - }
 
 - //读取会话
 
 - function read($sess_id) {
 
 -         global $link;
 
 -         $sql="select sess_value from sess where sess_id='$sess_id'";
 
 -         $rs=mysqli_query($link,$sql);
 
 -         $rows=mysqli_fetch_row($rs);
 
 -         return (string)$rows[0];
 
 - }
 
 - //写入会话
 
 - function write($sess_id,$sess_value) {
 
 -         global $link;
 
 -         $sql="insert into sess values ('$sess_id','$sess_value',unix_timestamp()) on duplicate key update sess_value='$sess_value',sess_time=unix_timestamp()";
 
 -         return mysqli_query($link,$sql);
 
 - }
 
 - //销毁会话
 
 - function destroy($sess_id) {
 
 -         global $link;
 
 -         $sql="delete from sess where sess_id='$sess_id'";
 
 -         return mysqli_query($link,$sql);
 
 - }
 
 - //垃圾回收
 
 - function gc($lifetime) {
 
 -         global $link;
 
 -         $expires=time()-$lifetime;        //过期时间点
 
 -         $sql="delete from sess where sess_time<$expires";
 
 -         return mysqli_query($link,$sql);
 
 - }
 
 - //更改会话存储
 
 - session_set_save_handler('open','close','read','write','destroy','gc');
 
 - //开启会话
 
 - session_start();
 
 - //session_destroy();
 
  复制代码 
 |