帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > PHP编程
PHP使用无限生命期Session的方法(二)
作者:匿名 发布时间:2002-12-25 来源:中国PHP联盟
前面说过,服务器通过SessionID来读取Session的数据,但是一般浏览器传送的SessionID在浏览器关闭后就没有了,那么我们只需要人为的设置SessionID并且保存下来,不就可以……



如果你拥有服务器的操作权限,那么设置这个非常非常的简单,只是需要进行如下的步骤:

1、把“session.use_cookies”设置为1,打开Cookie储存SessionID,不过默认就是1,一般不用修改;

2、把“session.cookie_lifetime”改为正无穷(当然没有正无穷的参数,不过999999999和正无穷也没有什么区别);

3、把“session.gc_maxlifetime”设置为和“session.cookie_lifetime”一样的时间;



设置完毕后,打开编辑器,输入如下的代码:



------------------------------------------

<?

session_start();

session_register('count');

$count++;

echo $count;

?>

------------------------------------------



然后保存为“session_check.php”,用浏览器打开“session_check.php”,看看显示的是不是“1”,再关闭浏览器,然后再打开浏览器访问“session_check.php”,如果显示“2”,那么恭喜了,你已经成功;如果失败的话,请检查你前面的设置。



但是如果你没有服务器的操作权限,那就比较麻烦了,你需要通过PHP程序改写SessionID来实现永久的Session数据保存。查查php.net的函数手册,可以见到有“session_id”这个函数:如果没有设置参数,那么将返回当前的SessionID,如果设置了参数,就会将当前的SessionID设置为给出的值……



只要利用永久性的Cookie加上“session_id”函数,就可以实现永久Session数据保存了!



但是为了方便,我们需要知道服务器设置的“session.name”,但是一般用户都没有权限查看服务器的php.ini设置,不过PHP提供了一个非常好的函数“phpinfo”,利用这个可以查看几乎所有的PHP信息!



----------------------------------

<title>PHP相关信息显示</title>

<?phpinfo()?>

------------------------------------



打开编辑器,输入上面的代码,然后在浏览器中运行这个程序,会见到PHP的相关信息。其中有一项“session.name”的参数,这个就是我们需要的服务器“session.name”,一般是“PHPSESSID”。



记下了SessionID的名称后,我们就可以实现永久的Session数据储存了!

打开编辑器,输入下面的代码:

-----------------------------------------------------------------------------

<?

session_start(); // 启动Session

session_register('count'); // 注册Session变量Count

if(isset($PHPSESSID)) {

session_id($PHPSESSID);

} // 如果设置了$PHPSESSID,就将SessionID赋值为$PHPSESSID,否则生成SessionID

$PHPSESSID = session_id(); // 取得当前的SessionID

$count++; // 变量count加1

setcookie('PHPSESSID', $PHPSESSID, time()+3156000); // 储存SessionID到Cookie中

echo $count; // 显示Session变量count的值

?>

--------------------------------------------------------------------------------



保存之后,利用和刚才拥有服务器权限时候的检测一样的方法,检测是否成功的保存了SessionID。





后记:

其实真正的永久储存是不可能的,因为Cookie的保存时间有限,而服务器的空间也有限……但是对于一些需要保存时间比较长的站点,以上方法就已经足够了!



最后,笔者的调试环境:Windows98DigExt(SE)+Apache+PHP 4.04。
  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·PHP使用无限生命期Session的方法  (2002-12-25)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·Windows下集成安装Apache,PHP,MYSQ
·Mysql注入:SQL Injection with MyS
·PHP 的来龙去脉
·PHP 的功能概述
·PHP与其它CGI的比较
·PHP 的编译配置详细选项
·php.ini 配置详细选项
·如何写作PHP程序
·Hello,World
·嵌入方法
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统