定制php4的session功能

2016-01-29 15:23 12 1 收藏

定制php4的session功能,定制php4的session功能

【 tulaoshi.com - PHP 】

       来源:znsoft翻译
  
   定制php4的session功能
  
  把它EMAIL给我 我来谈谈我的看法
  
  
  
  这篇文章描述了怎样定制php4的session处理。我们提供一个怎样写一个全功能的基于mysql数据库或dbm文件的session处理程序例子。
  
  一、序言
  
  新的php4有一套自己的session处理函数。缺省情况下,每个session存贮在系统临时目录的一个个独立文件中(例如在unix系统中为/tmp)。
  这适合或不适合,依你的需求而言。例如:如果你的支持php的web服务器分布在不同的机器上,你不能很容易地共享它们之间的session(当然,你也可以将sessions保存在NFS共享中)。另一个潜在的问题是你机器上的数千或数百万个session文件使你的文件系统变得散乱 。
  对我们来说幸运的是,php4的开发者非常有远见(感谢他们),他们为你我这样的用户提供了扩展session处理的接口。
  
  这个文档解释一点session的处理并且提供两个能够工作的怎样扩展session处理的例子。我们的第一个例子将使session处理程序保存 session数据到DBM文件中。我们的第二个例子将保存session数据到MYSQL数据库中。
  在你开始之前,请下载ying20000602.zip 并且将它解开放到web文档目录中。(我已经将它带在本文的结尾处了)
  任何一个我们写的session处理程序会提供6个基本的函数,它们将被php4的session处理程序调用,所以你不用担心怎样调用它们。
  好在这些定制处理session的函数对你来说是完全透明的。所以你可以改动它们而不会影响你自己的PHP脚本。
  
  这几个函数是:
  sess_open($sess_path, $session_name);
  
  这个函数被session处理程序调用来作初始化工作。需要传给它的两个参数是$sess_path,它对应你的php.ini文件中的session.save_path选项;$session_name,它对应php.ini中的session.name选项。它们具体怎样工作,请看下面的例子。
  
  sess_close();
  
  这个函数在页面结束执行并且session处理程序需要关闭时被调用。(注意,不要和sess_destory混淆了,它是用来结束session的)
  
  sess_read($key);
  
  这个函数在session处理程序读取指定session键值($key)时。
  这个函数检索并返回标识为$key的session数据.(注意:你不用担心怎样序列化和反序列化数据,如果你不知道这是什么意思,不要担心它)
  
  译者注:序列化是将变量或对象在程序结束或需要时保存在文件中,在下次程序运行或需要时再调入内存的技术,有别于只保存数据的方法。
  
  sess_write($key, $val);
  
  这个函数据在session处理程序需要将数据保存时调用,这种情况经常在你的程序结束时发生。
  它负责将数据保存在下次能用sess_read($key)函数检索的地方。
  
  sess_destroy($key);
  
  这个函数在需要消毁session时。它负责删除session并且清除环境。
  
  sess_gc($maxlifetime);
  这个函数负责清理碎片。在这种情况下,它负责删除过时的session数据。session处理程序会偶尔调用它们。
  
  现在我们已经清楚了我们提供的函数。它们不是非要这样命名,但必须接受这些参数。(不管你需不需要它们)
  
  DBM session 处理程序
  
  我们的第一个范例是写一个保存session数据到DBM文件中的定制session处理程序。(这是ying20000602.zip中的session_dbm.php文件)
  
  有很多充足的理由让你要这样做,例如,如果你在isp那儿有一台共享的服务器(译注:相当于我们说的虚拟主机吧)并且你不想让你的session数据
  
  和别人的混在一起。
  
  重要注释:
  在你试验这些程序时你的php4必须有DBM支持。如果不是这样的(译注:如果没有DBM支持)会很难看,真的很难看!
  我们要做的这些工作将会得到一个所有session数据的DBM文件。(万一你不知道,DBM文件象一个仅保存"键/值"对的非常简单的数据库.
  由下面的6个函数据实现:
  
  
  sess_open($sess_path, $session_name);
  我们将调用dbmopen()打开一个处于读写模式的DBM文件。我们的DBM文件将被命名为/tm

来源:https://www.tulaoshi.com/n/20160129/1495787.html

延伸阅读
标签: Web开发
PHP4之真OO 文的作者Johan Persson是PHP中著名的JpGraph图表类库的开发者. 本文是作者对于在PHP4中进行面向对象开发时需要注意的几个小问题的总结. 翻译: Binzy Wu [Mail: Binzy at JustDN dot COM], 水平有限, 欢迎探讨. 2004-2-4 简介 本文的对象是那些曾使用更加成熟的OO [1] 语言, 如Eiffel, Java, C# [2] or C++(), 进行开发的朋友(如...
标签: PHP
  <? /*************************************** ** Title.........: PHP4 HTTP Compression Speeds up the Web ** Version.......: 1.10 ** Author........: catoc <catoc@163.net ** Filename......: gzdoc.php ** Last changed..: 25/08/2000 ** Requirments...: PHP4 = 4.0.1 ** PHP was configured with --with-zlib[=...
标签: PHP
  标 题: 使用php4加速网络传输。 <? /*************************************** ** Title.........: PHP4 HTTP Compression Speeds up the Web ** Version.......: 1.10 ** Author........: catoc <catoc@163.net ** Filename......: gzdoc.php ** Last changed..: 25/08/2000 ** Requirments...: PHP4 = 4.0.1 ** &...
标签: PHP
PHP4之COOKIE支持详解      建立商业站点或者功能比较完善的个人站点,常常需要记录访问者的信息,在PHP中提供了两种方便的手段:session和cookie功能.为了永久的保持用户信息,则cookie是最便捷的手段.在这里我将为大家详细的讲解cookie的功能及使用方法.     一: 设置cookie ...
标签: PHP
除了"if"语句,PHP还提供了"if-else"结构,用来定义当语句中的条件描述为"false值时所执行的PHP代码。   "if-else" 结构使用方法如下: -------------------------------------------------------------------------------- if (condition) { do this! } else { do th...

经验教程

765

收藏

76
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部