修改session的存储机制
时间:2023-3-1 21:47 作者:wen 分类: PHP
<?php
//修改session的存储机制
//1.新建一张数据表来保存session的内容
//mysql>create table session(sess_id varchar(32),sess_content text,last_time int)engine myisam default charset utf8;
//2.修改配置
//将session的存储处理器设置为user,表示自定义的意识
ini_set('session.save_handler', 'user');
//将session打的存储使用session_set_save_handler()修改,参数都是函数名
session_set_save_handler('open', 'close', 'read', 'write', 'destroy', 'gc');
// 参数1:session_start()时候所做的处理
function open()
{
//去数据库读内容
$link = mysql_connect("localhost","root","root");
mysql_select_db("php");
mysql_query("set names utf8");
}
// 参数2:脚本关闭时的处理程序
function close()
{
echo '脚本结束';
return true;
}
// 参数3:读取数据库中的session数据,sessionID会自动传递到该函数中
function read($sess_id)
{
//从数据库读取session记录,根据sessionID找到对应的记录
$sql = "SELECT sess_content from session where sess_id='$sess_id'";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
return $row['sess_content'];
}
// 参数4:向数据表中写入session数据,自动将sessionID以及写入的内容传递到函数中
function write($sess_id,$sess_content)
{
$sql = "INSERT into session values('$sess_id','$sess_content',".time().")";
return mysql_query($sql);
}
// 参数5:销毁session文件,删除数据库中的session记录(执行session_distroy时),也会自动将session_id传递进来
function destroy($sess_id)
{
$sql = "DELETE from session where sess_id='$sess_id'";
return mysql_query($sql);
}
// 参数6:垃圾处理程序,会自动传递session的生命周期
function gc($max_lifetime)
{
$time = time()-$max_lifetime;
$sql = "DELETE from session where last_time<$time";
return msyql_query($sql);
}
//3.开始重写session的数据