关 键 词:
文件 定义 sess_file id session return function 保存
环境:php5.2.1 +apache2.2+win xp
1、按默认方式测试。
推荐先把SESSION手册上的函数看看。
首先修改php.ini文件中的一些配置,把session.save_path修改下,方便调式。比如我修改成“E:/PCTI/TMP”。保存重启apache。
书写测试文件test.php
<?
error_reporting(E^ALL);
session_start();
$_SESSION['username']='test';
?>
<a href='next.php'>next</a>
next.php
<?
session_start();
print_r($_SESSION);
print_r($_COOKIE);
?>
在浏览器中访问。
首先,打开我们设置的session保存路径,比如我的是E:/PCTI/TMP,果然在里面产生了一个文件。文件名是sess_****,而且****恰好是$_COOKIE['PHPSESSID']。
和我想象中的一样。
2、测试session_set_save_handler
首先删除了session保存文件夹中的session文件。
这里我使用的是手册里面的例子。
<?php
function open($save_path, $session_name)
{
global $sess_save_path, $sess_session_name;
$sess_save_path = $save_path;
$sess_session_name = $session_name;
return(true);
}
function close()
{
return(true);
}
function read($id)
{
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file, "r")) {
$sess_data = fread($fp, filesize($sess_file));
return($sess_data);
} else {
return(""); // Must return "" here.
}
}
function write($id, $sess_data)
{
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file, "w")) {
return(fwrite($fp, $sess_data));
} else {
return(false);
}
}
function destroy($id)
{
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
return(@unlink($sess_file));
}
/*********************************************
* WARNING - You will need to implement some *
* sort of garbage collection routine here. *
*********************************************/
function gc($maxlifetime)
{
return true;
}
session_set_save_handler("open", "close", "read", "write", "destroy", "gc");
session_start();
// proceed to use sessions normally
$_SESSION['username']='test';
?>
<a href='next.php'>next</a>
重新设置了。。结果和刚才一样。呵呵,那我们怎么知道我们自定义session处理成功了呢?
修改下保存session的文件名看看,把代码中的$sess_file = "$sess_save_path/sess_$id";都改成$sess_file = "$sess_save_path/my_new_sess_$id";重新运行看看。
哟,果然改变了。说明自定义session处理成功。
那么如何使用session_set_save_handler把session保存到文件中呢?呵呵,原理应该很简单了。。下次在详细说明下。欢迎进入PHP开发资源论坛讨论。
相关文章
图文推荐
主 站 资 源
论 坛 资 源
·SQLite结合PHP的开发实践
·简介一种PHP设计模式:DPT
·在PHP中使用XML-RPC来构造Web Service简介
·PHP网站注入方法之深度分析
·教你使用Apache的rewrite技术来实现URL重写
·Wordpress 2.5 Tags 标签功能
·详细解析:Apache服务器实现的用户验证
·set_include_path在win和linux下的区别
·PDO函数库使用入门
·模拟flock实现文件锁定
·简介一种PHP设计模式:DPT
·在PHP中使用XML-RPC来构造Web Service简介
·PHP网站注入方法之深度分析
·教你使用Apache的rewrite技术来实现URL重写
·Wordpress 2.5 Tags 标签功能
·详细解析:Apache服务器实现的用户验证
·set_include_path在win和linux下的区别
·PDO函数库使用入门
·模拟flock实现文件锁定
热门技术文档
·SQLite结合PHP的开发实践
·简介一种PHP设计模式:DPT
·在PHP中使用XML-RPC来构造Web Service简介
·PHP网站注入方法之深度分析
·教你使用Apache的rewrite技术来实现URL重写
·Wordpress 2.5 Tags 标签功能
·关于Servlet及JSP中遇到的多线程同步问题
·详细解析:Apache服务器实现的用户验证
·set_include_path在win和linux下的区别
·PDO函数库使用入门
·简介一种PHP设计模式:DPT
·在PHP中使用XML-RPC来构造Web Service简介
·PHP网站注入方法之深度分析
·教你使用Apache的rewrite技术来实现URL重写
·Wordpress 2.5 Tags 标签功能
·关于Servlet及JSP中遇到的多线程同步问题
·详细解析:Apache服务器实现的用户验证
·set_include_path在win和linux下的区别
·PDO函数库使用入门
最新图文档
本站编辑推荐:(本站开通Delphi4PHP专区,欢迎进入论坛交流!)
- > 3分钟快速了解 Delphi for PHP 特色 (中文), PDF档
- > 购买Delphi for PHP的五大理由, PDF档
- > Delphi for PHP 使用规格介绍, PDF档
- > Delphi for PHP 問答集 (From CodeGear)
- > Delphi for PHP 产品价格表
编缉最近更新文章
网站赞助商
搜索您感兴趣的内容



