自定义方式保存session到文件

/**
 * 自定义方式保存session到文件
 * 使用session_set_save_handler 函数
 * php.ini 设置
 * 默认为session.save_handler = files,必须将其修改为session.save_handler = user,即变为用户自定义方式。
 */
//在运行session_start()会执行
function open($save_path, $session_name) {//启动回话
	global $sess_save_path;
	$sess_save_path=$save_path;
	return true;
}

//sessin_writr_close() session_destroy()
function close() {
	return true;
}

//session_start() ,$_SESSION
function read($id) {//读取session
	global $sess_save_path;
	$sess_file=$sess_save_path."/glf_".$id;
	if (file_exists($sess_file)){
	  return (string)file_get_contents($sess_file);
	}else {
		return false;
	}
}

//结束时和sessin_writr_close()强制提交数据是$_SESSION[]="aaa";
function write($id ,$sess_data) {
	global $sess_save_path;
	$sess_file=$sess_save_path."/glf_".$id;
	
	if ($fp=fopen($sess_file, "w")){
		$return=fwrite($fp, $sess_data);
		fclose($fp);
		return $return;
	}else {
		return false;
	}
}

//session_destroy()
function destroy($id) {
	global $sess_save_path;
	$sess_file=$sess_save_path."/glf_".$id;
	return unlink($sess_file);
}

//session.gc_probability和 session.gc_divisor值决定的,open(), read() session_start也会执行gc
function gc($maxlifetime) {
	global $sess_save_path;
	
	foreach (glob($sess_save_path."/glf_*") as $filename){
		if (filemtime($filename)+$maxlifetime < time()){
			unlink($filename);
		}
	}
	return true;
}

session_set_save_handler("open", "close", "read", "write", "destroy", "gc");

session_start();


调用文件1 file1.php

//原始方式
/*
session_start();

$_SESSION["islogin3"] = 1;
$_SESSION["username"] = "admin";
$_SESSION["uid"] = 333;

echo session_name().'='.session_id()."<br>";
*/

//session_set_save_handler 方式
include 'session.php';

$_SESSION["islogin3"] = 1;
$_SESSION["username"] = "admin";
$_SESSION["uid"] = 333;

echo session_name().'='.session_id()."<br>";


调用文件2 file2.php

//原始方式
/*
session_start();

print_r($_SESSION);
echo "<br>";

echo session_name().'='.session_id()."<br>";
*/


//session_set_save_handler 方式
include 'session.php';

print_r($_SESSION);
echo "<br>";

echo session_name().'='.session_id()."<br>";


调用文件3 file3.php

//原始方式
/*
session_start();

$_SESSION = array();
if (isset($_COOKIE[session_name()])){
	setcookie(session_name(), '' , time()-100, '/');
}
session_destroy();

echo session_name().'='.session_id()."<br>";
*/


//session_set_save_handler 方式
include 'session.php';

$_SESSION = array();
if (isset($_COOKIE[session_name()])){
	setcookie(session_name(), '' , time()-100, '/');
}
session_destroy();

echo session_name().'='.session_id()."<br>";

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值