php开发教程更改会话存储(session入库)
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;
}
//写入会话
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();
页:
[1]