PHP脚本的10个技巧转自ZDNet--会话Session用法_PHP教程
程序员文章站
2022-05-11 20:09:48
...
会话用法 PHP 4.0有一个一直为人所期待的特性,这就是PHP的会话(session)支持。相比之下,PHP 3.0的用户则不得不使用第三方的程序库或完全不能具备这项功能。缺乏会话支持能力是PHP最大的缺陷之一,也是它最受人指摘的地方。不过,随着会话支持从早期测试版本的PHP 4.0开始就成为后者的一部分,这个障碍也荡然无存了。 有了会话支持,你就可以在用户访问网络站点期间维持用户特定的变量而无须象现在这样:设置多个cookie、使用隐蔽表单域或在你可能经常要连结的一个数据库内存储信息等。 在一个页面上启动会话就是告诉PHP引擎:你或是要开始一个会话(如果先前没有)或是继续目前的会话: session_start(); 启动一个会话将通过cookie向用户发送一个标识字符串(比如940f8b05a40d5119c030c9c7745aead9);在服务器端则会创建一个与此相匹配的临时文件,在以上例子中,其名称则是这个样子:sess_940f8b05a40d5119c030c9c7745aead9。该文件包含了注册的会话变量及其赋值。 用户访问计数器可谓使用会话的最常见实例: 启动你的PHP模块,保证PHP代码是文件的第一行:没有空白、没有HTML输出等等。这是因为,当会话函数发出一个文件头的时候,如果你在session_start()函数之前发送了空白或者HTML代码,系统即会报错。 // if a session does not yet exist for this user, start one session_start(); 接下来,注册一个名为count的变量。 session_register(count); 注册变量就等于告诉了PHP:只要会话存在,一个名叫count的变量也就同时存在。目前这个变量还没有赋值。不过,如果你对它进行加1运算的话,该值即可被赋值为1: $count++; 把以上各行代码一起考虑,实际上你已经启动了一个会话(如果先前没有)、为某个用户分配了会话id、注册了名为count的变量并把$count加1以表示用户首次访问页面: 要显示用户在当前会话下访问页面的次数,你只要打印出$count的值即可: echo "
Youve been here $count times.
"; 整个访问计数器代码如下所示: session_start(); session_register(count); $count++; echo "
Youve been here $count times.
"; ?> 如果你重载以上脚本,你可以观察到计数值增加了。有意思吧? 你还可以在会话中注册数组。假设你有一个名为$faves的数组: $faves = array (chocolate,coffee,beer,linux); 你可以象其他单个变量一样注册该数组: session_register(faves); 索引数组和索引其他单变量没有什么差别,比如$faves这样。如果你的用户想在Web站点的一个页面上展示自己的爱好,那么你完全可以把他喜欢的东西注册为一个名为$faves会话变量,然后你可以在其他页面上把这些值打印出来: session_start(); echo "My user likes:
Youve been here $count times.
"; 整个访问计数器代码如下所示: session_start(); session_register(count); $count++; echo "
Youve been here $count times.
"; ?> 如果你重载以上脚本,你可以观察到计数值增加了。有意思吧? 你还可以在会话中注册数组。假设你有一个名为$faves的数组: $faves = array (chocolate,coffee,beer,linux); 你可以象其他单个变量一样注册该数组: session_register(faves); 索引数组和索引其他单变量没有什么差别,比如$faves这样。如果你的用户想在Web站点的一个页面上展示自己的爱好,那么你完全可以把他喜欢的东西注册为一个名为$faves会话变量,然后你可以在其他页面上把这些值打印出来: session_start(); echo "My user likes:
- "; while (list(,$v) = each ($faves)) { echo "
- $v"; } echo "