RSS订阅
PHP程序员站--WWW.PHPERZ.COM  
网站地图
高级搜索
收藏本站

 当前位置:主页 >> PHP高级编程 >> 开发技巧 >> 文章内容
PHP开发的八个小技巧之(二)
[收藏此页[打印本页]   
来源:互联网  作者:未知  发布时间:2007-12-08

 这八个技巧是编者在网上收集到的,贴出来和大家分享,希望对大家在编程中有用。
PHP程序员站

会话用法
    PHP 4.0有一个一直为人所期待的特性,这就是PHP的会话(session)支持。相比之下,PHP 3.0的用户则不得不使用第三方的程序库或完全不能具备这项功能。缺乏会话支持能力是PHP最大的缺陷之一,也是它最受人指摘的地方。不过,随着会话支持从早期测试版本的PHP 4.0开始就成为后者的一部分,这个障碍也荡然无存了。  PHP程序员站

     有了会话支持,你就可以在用户访问网络站点期间维持用户特定的变量而无须象现在这样:设置多个cookie、使用隐蔽表单域或在你可能经常要连结的一个数据库内存储信息等。 PHP程序员站--PHP程序员之家

在一个页面上启动会话就是告诉PHP引擎:你或是要开始一个会话(如果先前没有)或是继续目前的会话: PHP程序员站--PHP程序员之家

session_start();

www phperz com

    启动一个会话将通过cookie向用户发送一个标识字符串(比如940f8b05a40d5119c030c9c7745aead9);在服务器端则会创建一个与此相匹配的临时文件,在以上例子中,其名称则是这个样子:sess_940f8b05a40d5119c030c9c7745aead9。该文件包含了注册的会话变量及其赋值。 www~phperz~.com

用户访问计数器可谓使用会话的最常见实例:

PHP程序员站

    启动你的PHP模块,保证PHP代码是文件的第一行:没有空白、没有HTML输出等等。这是因为,当会话函数发出一个文件头的时候,如果你在session_start()函数之前发送了空白或者HTML代码,系统即会报错。

PHP程序员站

<?
// if a session does not yet exist for this user, start one
session_start();

PHP程序员站

接下来,注册一个名为count的变量。

PHP程序员站--PHP程序员之家

session_register('count'); www~phperz~.com

    注册变量就等于告诉了PHP:只要会话存在,一个名叫count的变量也就同时存在。目前这个变量还没有赋值。不过,如果你对它进行加1运算的话,该值即可被赋值为1: phperz.com

$count++;

PHP程序员站

    把以上各行代码一起考虑,实际上你已经启动了一个会话(如果先前没有)、为某个用户分配了会话id、注册了名为count的变量并把$count加1以表示用户首次访问页面:

PHP程序员站

要显示用户在当前会话下访问页面的次数,你只要打印出$count的值即可: PHP程序员站

echo "<P>You've been here $count times.</p>";

www.phperz.com

整个访问计数器代码如下所示:

www~phperz~.com

<?
session_start();
session_register('count');
$count++;
echo "<P>You've been here $count times.</p>";
?>

www phperz com

如果你重载以上脚本,你可以观察到计数值增加了。有意思吧?

www phperz com

你还可以在会话中注册数组。假设你有一个名为$faves的数组:

phperz.com

$faves = array ('chocolate','coffee','beer','linux'); PHP程序员站--PHP程序员之家

你可以象其他单个变量一样注册该数组: PHP程序员站--PHP程序员之家

session_register('faves');

www phperz com

    索引数组和索引其他单变量没有什么差别,比如$faves这样。如果你的用户想在Web站点的一个页面上展示自己的爱好,那么你完全可以把他喜欢的东西注册为一个名为$faves会话变量,然后你可以在其他页面上把这些值打印出来: PHP程序员站--PHP程序员之家

<?
session_start();
echo "My user likes:
<ul>"; PHP程序员站--PHP程序员之家

while (list(,$v) = each ($faves)) {
echo "<li>$v"; } PHP程序员站

echo "</ul>";
?> phperz.com

这就是你要得到的:用户爱好的漂亮列表。

www.phperz.com

    会话变量不能被查询字符串所覆盖,这就是说,你不能键入http:///www.yourdomain.com/yourscript.PHP?count=56 这样的指令为注册会话变量$count分配新值。这一点对安全而言是非常重要的:你只能在服务器端脚本上修改或者删除(未注册的)会话变量。

phperz.com

如果你想完全删除某个会话变量,你可以从系统中取消注册该变量: www phperz com

session_unregister('count'); www phperz com

彻底删除某个会话,比如按下LOGOut按钮就是这样的例子,那么你可以写下如下的代码:

www phperz com

session_destroy(); www phperz com

    使用会话来存储变量值可以让我们免于编写数据库处理代码的痛苦,这样也就不会过度增加对系统的负载,同时也减少了对专有数据库语法的使用范围,再说,你也不再非得向访问站点的用户发送一大堆cookie了。而现在呢——只需要一个cookie、一个变量就全部搞定了,真是一滴水就映出了全部光辉!实在是不能比这更简单的了。 PHP程序员站--PHP程序员之家


 上一篇:PHP开发的八个小技巧之(一)   下一篇:PHP开发的八个小技巧之(三)
 
 相关文章
 
发表评论
全部评论(0条)
 
 站内搜索
 热门搜索 mysql  基础  php基础  url
高级搜索 网站地图 站长工具 IP查询 收藏本站
 热点文章
 随机推荐
网站首页 | 网站地图 | 高级搜索 | RSS订阅
PHP程序员站 Copyright © 2007,PHPERZ.COM All Rights Reserved 粤ICP备07503606号 联系站长