当前位置: 首页 > 图文教程 > 网络编程 > PHP > PHP开发中session应用详解

PHP
用PHP构建一个留言本
用PHP实现通过Web执行C/C++程序
PHP百行代码快速构建简易聊天室
FC4下安装plog快速指南(plog版本:1.01)
一个简单的PHP投票程序
采用行写方式的聊天程序(之四)
PHP对象编程实现3D饼图
可以文本显示的公告栏
采用行写方式的聊天程序(之五)
一个可分页的基于文本的PHP留言板
PHP用户认证及管理完全源码
初学者的留言簿
一个很简单的PHP的后端脚本,能够从(某个网中)得到最新新闻。
是一个设计将LinuxFreak.org新闻标题放置到你的网站的PHP脚本程序。
如何用php作线形图的函数
简单用户注册程序
一个浏览器检查类
用PHP+MYSQL实现论坛里的分级+分页显示
判断ICQ是否在线的代码
PHP的FDF文档支持

PHP开发中session应用详解


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 73 ::
收藏到网摘: n/a

 

  Session指的就是用户在浏览某个网站时,从进入网站到浏览器关闭所经过的这段时间,也就是用户浏览这个网站所花费的时间。从上述的定义中我们可以看到,Session实际上是一个特定的时间概念。

  一般来说,在网站上某一个页面中的变量(指服务器端变量,下同)是不能在下一页中用的,有了session就好办了。session中注册的变量可以作为全局变量使用。这样我们就可以将session用于用户身份认证,程序状态记录,页面之间参数传递。

  在PHP3版本中是如何实现session的?

  php3本身是没有实现session功能的,我们只有用其他的方法来实现,这其中最有名的要算phplib了。phplib最基本的功能包括用户认证、Session管理、权限及数据库的抽象化。下面我们就讲述一下如何用phplib实现session。

  1、首先安装phplib(环境为win2000+php3.0.16+Apache1.3.12+phplib7.2c+mysql3.23.21 for win32)

  首先将phplib解开,里面有一个"php"目录,将这个目录拷贝到Apache的安装目录下。例如:Apache安装在d:\Apache 目录下,那么就将"php"目录拷贝到d:\Apache,并将phplib目录的pages目录下(不包括目录本身)的文件和目录一起拷贝到d:\Apache\htdocs下。

  phplib的类库需要根据系统进行初始化,可能需要修改local.inc文件,其中包含着一些基本参数,可以根据自己机器的实际情况来进行修改。

  将d:\Apache\php\prepend.php文件中的一段程序改为如下样子:

if (!isset($_PHPLIB) or !is_array($_PHPLIB)) {
  $_PHPLIB["libdir"] = "d:/Apache/php/"; //放phplib下php目录的路径

  修改d:\Apache\php\local.inc文件:

class DB_Example extends DB_Sql {
  var $Host = "localhost"; //mysql数据库所在主机名
  var $Database = "test"; //数据库名
  var $User = "root"; //数据库用户名
  var $Password = "1234567"; //数据库用户密码

  最后根据phplib目录下的stuff子目录中的create_database.mysql文件生成初始表。

  由于每一个使用phplib的页面首先必须可以找到运行phplib所必需的类库文件,我们可以在php.ini中设置auto_prepend变量来支持,phplib中包含一个prepend.php文件,并将auto_prepend指定为"d:/Apache/php/prepend.php"(带引号)后,各页面就会自动包含phplib类库,我们还可以将phplib类库所在目录加进include变量中,以便可以找到这些文件。 2、调用page_open()函数

  在每一个使用phplib的页面中,必须首先调用page_open函数进行初始化,例如:

<?php
  page_open(array("sess" => "Test_Session"));
?> 

  数组变量(sess)用来初始化一些状态保存对象,这里应该注意:必须使用phplib内置名(sess),这些内置名是在local.inc中所定义的.。

  因为phplib使用了Cookies来保存状态信息,所以page_open()函数必须在页面内容输出到浏览器之前被调用。php脚本最后应以page_close()结束,这将会将有关状态数据写回到数据库中,否则变量会丢失。

  3、具体使用。

  注册一个变量后即可在随后的页面中使用它,直至session结束。方法:

  <?php $sess->register( "varname"); ?>

  注意,这里的varname不是变量值,而是变量名,可以先指定变量名,随后再赋值。你在某个页面中可以改变变量的值,随后的页面访问该变量时会得到改变后的值。变量的类型是多样的,可以是一个字符串,一个数字,一个数组。举例来说明:

  第一页:

<?php
 page_open(array("sess" => "Test _Session"));
 $sess->register( "welcome"); //注册变量$welcome,注意不需要加$
 $welcome="Hello,PHP world!";
 ……
 page_close();
?> 

  第二页:

<?php
 page_open();//开始session
 echo $welcome;//显示第一页中定义的$welcome
 page_close();//保存状态信息
?> 

  注册完一个变量,当页面最后调用page_close()函数后,各个session变量会被写回到数据库中。如果忘记调用page_close()函数的话,变量就不会被写回数据库,这样将出现不可预知的后果。当变量被使用完毕,不再需要用到时,可以调用以下函数将变量删除:

<?php
 page_open(array("sess" => "Test _Session"));
 ……
 $sess->unregister( "variable_name");
 ……
 page_close();
?> 

  在PHP4版本中是如何实现session的?

  php4的session也靠cookies保存session id,用文件系统保存变量(默认情况下),因此,它的session变量不能保存对象。当然也可以将session保存在数据库中。

  在php4中有关session的函数很多(详见php.ini配置一文),通常情况下我们只需要调用三个函数即可:sesssion_start()、session_register()、session_is_register