PHP 使用者状态管理功能的应用
程序员文章站
2022-05-27 11:57:11
...
使用者状态管理(session support)是 PHP 4.0 一个让大家期待已久的新功能。在 PHP 3.0 的时代,程序设计员必须使用其它人写好的函式库来实作状态管理功能,或者就干脆放弃这项功能不用算了。而状态管理功能的缺乏事实上是 PHP 3.0 最让人感到失望的地方之一。不过现在状况已经得到改变,从 PHP 4.0 的早期测试版开始,使用者状态管理便已经成为 PHP 内建的功能之一了。
你可以使用状态管理功能来管理使用者从进入网站开始一直到离开网站为止这段期间内的所有相关变量(只要使用者没有离开网站,那么这些变量就都可以取用,不会因为使用者离开某个单一页面而造成资料消失),而不需要储存许多cookie 或者使用隐藏窗体字段,甚至将这些变量储存在数据库里面,造成数据库服务器的大量负荷。
一旦你在网站中的某一页激活状态管理,PHP 引擎便会开始纪录使用者状态(如果对这个使用者来说系统还没开始纪录该访问者的状态的话),或者继续纪录某个先前已经激活的使用者状态。要激活 PHP 的状态管理功能,你可以使用下面这个语法:
session_start();
一旦激活状态管理,PHP 会通过 cookie 传送一个独一无二的状态代码(这个代码看起来会像是:940f8b05a40d5119c030c9c7745aead9)给使用者,同时在服务器这端,PHP 引擎会自动产生一个档名与状态代码相对应的暂存文本文件(如:sess_940f8b05a40d5119c030c9c7745aead9),该档案会用来储存程序设计员在这个使用者状态纪录中所注册的所有变量。
谈到使用者状态管理,最常使用的例子便是一个页面存取计数器(access counter)了:现在我就开始教大家撰写 PHP 程序代码。
特别注意
在你尝试激活使用者状态纪录之前,千万不能够输出任何内容(不能有空格,TAB 甚至换行等等空格符,也不能有任何 HTML 卷标,任何内容都不行)给浏览器。这是因为状态管理相关函数会送出 HTTP 表头(header)信息给浏览器,如果在送出 HTTP 表头信息给浏览器之前已经有其它内容被输出的话,系统将会出现错误讯息。
如果该使用者的状态管理尚未被激活的话,下面这行程序便会激活该使用者的状态管理:
session_start();
接下来,注册一个名为count的变量:
session_register('count');
一旦你注册了一个变量,PHP 便会在从使用者进入网站一直到离开网站的整个浏览过程中自动替你维护这个变量的值,你可以随时取用这些注册过的变量。刚注册好的变量并没有指定任何值给它,不过一旦我们增加 count 变量的值,它的值便会是 1 了:
你可以使用状态管理功能来管理使用者从进入网站开始一直到离开网站为止这段期间内的所有相关变量(只要使用者没有离开网站,那么这些变量就都可以取用,不会因为使用者离开某个单一页面而造成资料消失),而不需要储存许多cookie 或者使用隐藏窗体字段,甚至将这些变量储存在数据库里面,造成数据库服务器的大量负荷。
一旦你在网站中的某一页激活状态管理,PHP 引擎便会开始纪录使用者状态(如果对这个使用者来说系统还没开始纪录该访问者的状态的话),或者继续纪录某个先前已经激活的使用者状态。要激活 PHP 的状态管理功能,你可以使用下面这个语法:
session_start();
一旦激活状态管理,PHP 会通过 cookie 传送一个独一无二的状态代码(这个代码看起来会像是:940f8b05a40d5119c030c9c7745aead9)给使用者,同时在服务器这端,PHP 引擎会自动产生一个档名与状态代码相对应的暂存文本文件(如:sess_940f8b05a40d5119c030c9c7745aead9),该档案会用来储存程序设计员在这个使用者状态纪录中所注册的所有变量。
谈到使用者状态管理,最常使用的例子便是一个页面存取计数器(access counter)了:现在我就开始教大家撰写 PHP 程序代码。
特别注意
在你尝试激活使用者状态纪录之前,千万不能够输出任何内容(不能有空格,TAB 甚至换行等等空格符,也不能有任何 HTML 卷标,任何内容都不行)给浏览器。这是因为状态管理相关函数会送出 HTTP 表头(header)信息给浏览器,如果在送出 HTTP 表头信息给浏览器之前已经有其它内容被输出的话,系统将会出现错误讯息。
如果该使用者的状态管理尚未被激活的话,下面这行程序便会激活该使用者的状态管理:
session_start();
接下来,注册一个名为count的变量:
session_register('count');
一旦你注册了一个变量,PHP 便会在从使用者进入网站一直到离开网站的整个浏览过程中自动替你维护这个变量的值,你可以随时取用这些注册过的变量。刚注册好的变量并没有指定任何值给它,不过一旦我们增加 count 变量的值,它的值便会是 1 了: