频道直达 - 专题 - 新闻 - 基础 - 高级 - 安装 - 技巧 - 数据库 - 手册 - PHP - Linux - Java - MySQL - Apache - 麻辣堂 - 狼盟 - Rails社群 - 搜索 - 下载 - 开源 - 论坛

自定义SESSION(一)——文件

来源:www.phpres.com 作者:Angelover 出处:www.phpres.com 2007-9-11 17:59:11 进入讨论组
关 键 词: 文件 定义 sess_file id session return function 保存

之前没详细猜测试过session。今天自己动手试试,验证下。
 环境: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($fpfilesize($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开发资源论坛讨论。
收藏此文】【 】【打印】【关闭
相关文章
图文推荐
论 坛 资 源
PHP开发资源网奋斗目标
阅读排行:
热门技术文档
最新图文档
本站编辑推荐:(本站开通Delphi4PHP专区,欢迎进入论坛交流!)
编缉最近更新文章
网站赞助商
搜索您感兴趣的内容
 
   网站首页 -  网站地图 -  网站合作 -  手册中心 -  通用网址 -  网站论坛 -  网站投稿 -  友情链接 -  帮助中心
版权所有:PHP开发资源网 © 2003-2008 通用网址:PHP资源网 合作媒体: 赛迪网IT技术
互联网违法和不良信息举报中心 | 不良信息举报信箱