二使用PHP本身的对话
PHP 中最令人期待的特性应该是对对话的支持PHP 的用户必须使用第三方的软件否则就不能使用对话不支持对话一直是PHP最大的缺憾之一
只要用户在浏览你的网站你就可以利用对话维护与特定用户有关的变量而无需建立多个cookie使用隐藏表格字段或将信息存储在数据库中
在一个网页上启动一个对话就会使PHP引擎知道你想启动一个对话(如果还没有启动)或者继续当前的对话session_start();
启动一个对话将通过cookie向用户发送一个识别字符串(例如fbadcccaead)在服务器端会创建一个与识别字符串匹配的临时文件例如sess_fbadcccaead这个文件中包含注册的对话变量以及它们的值
用来显示对话的作用的最常见的例子是访问计数器启动PHP模块确保PHP代码是文件的第一行在PHP代码之前不要有空格HTML代码和其他的代码因为对话会发送一个头部因此如果在session_start()之前有空格和HTML代码就会得到一个出错信息
<?
// 如果还不存在一个针对某用户的用户则启动一个对话
session_start();
然后注册一个名字为count的变量
session_reGISter(count);
注册一个对话变量后只要对话存在名字为count的变量也就存在现在count变量还没有被赋值如果对它执行加操作它的值就变为了
$count++;
把上述内容综合在一块儿如果还没有启动一个对话就会启动一个对话如果不存在一个对话id就为用户指定一个好了注册一个名字为$count的变量对$count执行加操作表示用户已经首次访问了该网页
要知道用户在当前的对话中访问本页面的次数只要显示$count变量的值即可
echo <P>Youve been here $count times</p>;
全部的访问计数器代码如下所示
<?
session_start();
session_register(count);
$count++;
echo <P>Youve been here $count times</p>;
?>
如果重新加载上述的脚本文件就会发现变量count的值增加了
还可以在对话中注册一个数组变量假设我们注册了一个名字为$faves的变量
$faves = array (chocolatecoffeebeerlinux);
可以象注册一个简单变量那样注册一个数组变量
session_register(faves);
引用数组变量与引用简单变量没有什么二样如果一个用户在网页上指出在生活中的爱好时可以把他的爱好注册到一个被称作$faves的数组变量中然后可以在另一个网页中很方便地把这些爱好显示出来
<?
session_start();
echo My user likes:
<ul>;
while (list($v) = each ($faves)) {
echo <li>$v; }
echo </ul>;
?>
然后你就得到了一个关于用户爱好的清单
对话变量不能被查询字符串覆盖也就是说我们不能输入http:///wwwyourdomaincom/yourscriptphp?count=给注册变量$count指定一个新值这一点对于安全很重要只能在服务器端的脚本中删除一个没有注册的对话变量
如果要完全删除一个对话变量首先需要从系统中注销它
session_unregister(count);
要完全删除一个对话变量的脚本是非常简单如下所示
session_destroy();
使用对话变量可以减少访问数据库的频率使代码更加清晰而且可以减少对用户发送的cookie的数量它是最简单的方法了