当前位置:首页> PHP教程> PHP入门
关键字
文章内容
使用 PHP 本身的对话
 
 
修改时间:[2009/01/22 06:34]    阅读次数:[1119]    发表者:[起缘]
 
PHP 4.0中最令人期待的特性应该是对对话的支持,PHP 3.0的用户必须使用第三方的软件否则就不能使用对话,不支持对话一直是PHP最大的缺憾之一。

只要用户在浏览你的网站,你就可以利用对话维护与特定用户有关的变量,而无需建立多个Cookie、使用隐藏表格字段或将信息存储在数据库中。

在一个网页上启动一个对话,就会使PHP引擎知道你想启动一个对话(如果还没有启动)或者继续当前的对话:

session_start();


启动一个对话将通过Cookie向用户发送一个识别字符串(例如940f8b05a40d5119c030c9c7745aead9),在服务器端,会创建一个与识别字符串匹配的临时文件,例如sess_940f8b05a40d5119c030c9c7745aead9,这个文件中包含注册的对话变量以及它们的值。

用来显示对话作用的最常见的例子是访问计数器。启动PHP模块,确保PHP代码是文件的第一行,在PHP代码之前不要有空格、HTML代码和其他的代码。因为对话会发送一个头部,因此如果在session_start()之前有空格和HTML代码,就会得到一个出错信息。

<?
// 如果还不存在一个针对某用户的用户,则启动一个对话:
session_start();
然后注册一个名字为count的变量:
session_register('count');


注册一个对话变量后,只要对话存在,名字为count的变量也就存在。现在,count变量还没有被赋值,如果对它执行加1操作,它的值就变为了1。

$count++;


把上述内容综合在一块儿,如果还没有启动一个对话,就会启动一个对话;如果不存在一个对话id,就为用户指定一个好了,注册一个名字为$count的变量,对$count执行加1操作表示用户已经首次访问了该网页。

要知道用户在当前的对话中访问本页面的次数,只要显示$count变量的值即可:

echo "<P>You've been here $count times.</p>";
全部的访问计数器代码如下所示:
<?
session_start();
session_register('count');
$count++;
echo "<P>You've been here $count times.</p>";
?>


如果重新加载上述的脚本文件,就会发现变量count的值增加了1,很酷吧。

还可以在对话中注册一个数组变量,假设我们注册了一个名字为$faves的变量:

$faves = array ('chocolate','coffee','beer','linux');


可以像注册一个简单变量那样注册一个数组变量:

session_register('faves');


引用数组变量与引用简单变量基本相同,如果一个用户在网页上指出在生活中的爱好时,可以把他的爱好注册到一个被称作$faves的数组变量中,然后可以在另一个网页中很方便地把这些爱好显示出来:

<?
session_start();
echo "My user likes:
<ul>";
while (list(,$v) = each ($faves)) {
echo "<li>$v"; }
echo "</ul>";
?>


然后你就得到了一个关于用户爱好的清单。

对话变量不能被查询字符串覆盖,也就是说我们不能输入http:///www.yourdomain.com/yourscript.php?count=56给注册变量$count指定一个新值,这一点对于安全很重要:只能在服务器端的脚本中删除一个没有注册的对话变量。

如果要完全删除一个对话变量,首先需要从系统中注销它:

session_unregister('count');


要完全删除一个对话变量的脚本如下所示:

session_destroy();


使用对话变量可以减少访问数据库的频率,使代码更加清晰,而且可以减少对用户发送Cookie的数量,它是最简单的方法了。


作者:马马
摘自:赛迪网
 
 
 
上一页:flock
下一页:rename函数