美高梅官方网站3045-mgm6608美高梅app下载
PHP脚本的10个技巧_php基础_脚本之家

PHP脚本的10个技巧_php基础_脚本之家

作者:mgm6608美高梅app下载    来源:未知    发布时间:2019-11-22 19:37    浏览量:

使用者状态管理是 PHP 4.0 一个让大家期待已久的新功能。在 PHP 3.0 的时代,程序设计员必须使用其它人写好的函式库来实作状态管理功能,或者就干脆放弃这项功能不用算了。而状态管理功能的缺乏事实上是 PHP 3.0 最让人感到失望的地方之一。不过现在状况已经得到改变,从 PHP 4.0 的早期测试版开始,使用者状态管理便已经成为 PHP 内建的功能之一了。 你可以使用状态管理功能来管理使用者从进入网站开始一直到离开网站为止这段期间内的所有相关变量(只要使用者没有离开网站,那么这些变量就都可以取用,不会因为使用者离开某个单一页面而造成资料消失),而不需要储存许多cookie 或者使用隐藏窗体字段,甚至将这些变量储存在数据库里面,造成数据库服务器的大量负荷。 一旦你在网站中的某一页激活状态管理,PHP 引擎便会开始纪录使用者状态(如果对这个使用者来说系统还没开始纪录该访问者的状态的话),或者继续纪录某个先前已经激活的使用者状态。要激活 PHP 的状态管理功能,你可以使用下面这个语法: session_start();一旦激活状态管理,PHP 会通过 cookie 传送一个独一无二的状态代码(这个代码看起来会像是:940f8b05a40d5119c030c9c7745aead9)给使用者,同时在服务器这端,PHP 引擎会自动产生一个档名与状态代码相对应的暂存文本文件(如:sess_940f8b05a40d5119c030c9c7745aead9),该档案会用来储存程序设计员在这个使用者状态纪录中所注册的所有变量。 谈到使用者状态管理,最常使用的例子便是一个页面存取计数器了:现在我就开始教大家撰写 PHP 程序代码。 特别注意 在你尝试激活使用者状态纪录之前,千万不能够输出任何内容(不能有空格,TAB 甚至换行等等空格符,也不能有任何 HTML 卷标,任何内容都不行)给浏览器。这是因为状态管理相关函数会送出 HTTP 表头信息给浏览器,如果在送出 HTTP 表头信息给浏览器之前已经有其它内容被输出的话,系统将会出现错误讯息。 如果该使用者的状态管理尚未被激活的话,下面这行程序便会激活该使用者的状态管理: session_start();接下来,注册一个名为count的变量: session_register;一旦你注册了一个变量,PHP 便会在从使用者进入网站一直到离开网站的整个浏览过程中自动替你维护这个变量的值,你可以随时取用这些注册过的变量。刚注册好的变量并没有指定任何值给它,不过一旦我们增加 count 变量的值,它的值便会是 1 了: $count++;把这些程序代码组合起来,我们的程序代码就会做下面这些事情了:激活使用者状态纪录功能,指定一个独一无二的状态代码给该使用者,注册一个名为 count 的变量,并且在每次使用者浏览到该页面的时候,将变量 $count 的值加一,这个值就可以用来记录该使用者浏览过该页面的次数了。 如果要将使用者这次的浏览历程中观看了该页面多少次,我们只需要将变量$count 的值列印出来就行了: echo "<P>您已经浏览这个页面$count 次了。</p>";完整的页面浏览计数器程序代码看起来就像这样: <?session_start();session_register;$count++;echo "<P>您已经浏览这个页面 $count 次了。</p>";?> 如果你不断重新加载这个页面,你会发现画面上显示的浏览次数会不断的增加。除了注册单纯的变量以外,我们也可以注册一个数组到使用者状态纪录中。假设我们有下面这个名为 $faves 的数组: $faves = array ('古典音乐','旅游','唱歌','Linux');注册数组的做法和注册其它单纯变量是完全一样的: session_register;注册完成数组以后,在往后的程序代码里面要参照到该数组的做法也没有任何不同,只要单纯地叫用 $faves 这个变量就行了。假设你的使用者在网站中某个页面窗体里头选择了一些他所喜欢的东西,而且你将这些项目通过 $faves 数组注册到该使用者的状态纪录里面,那么在网站中其它页面你可以很容易地把这些项目显示在画面上: <?session_start();echo "我的访客喜欢的东西是:<ul>"; while = each {echo "<li>$v</li>"; } echo "</ul>";?> 就这么轻轻松松的,你就可以把访客喜欢的东西显示在网页上了。 使用者状态纪录所注册的变量是无法用查询字符串来盖过的,比方说,使用者无法直接在浏览器的地址列输入下面的 URL: 来企图盖过原本注册在使用者状态纪录中的 $count 变量的值。这是一个非常重要的安全观念:只有你自己能够在你的程序里面注册或者删除使用者状态纪录中的变量,其它使用者无法通过 URL 后面的查询字符串企图混淆这些变量的值。 要删除原本注册过的使用者状态变量,你可以使用下面的语法: session_unregister;要将整个使用者状态纪录变量全部删除并且停止纪录,请使用下面的语法: session_destroy();结语: 适当地善用使用者状态纪录功能的好处多多:它可以让我们不须将使用者状态资料储存在数据库中,减少数据库服务器的负荷。它也可以让我们不需要自己撰写长长的程序代码来通过 cookie 纪录这些使用者状态变量(而且,这样一来我们也不用在网站的隐私权声明里头花上很长的篇幅来解释为什么当使用者登入网站的时候,我们要储存五十个 cookie 到他们的硬盘里面去了)。这项功能让我们只需要一个 cookie 来储存一个变量就行了,其它所有的信息都通过一个精巧无比的机制来帮我们纪录,让我们的工作变得再简单不过了!

"; ?> 如果你重载以上脚本,你可以观察到计数值增加了。有意思吧? 你还可以在会话中注册数组。假设你有一个名为$faves的数组: $faves = array ('chocolate','coffee','beer','linux'); 你可以象其他单个变量一样注册该数组: session_register; 索引数组和索引其他单变量没有什么差别,比如$faves这样。如果你的用户想在Web站点的一个页面上展示自己的爱好,那么你完全可以把他喜欢的东西注册为一个名为$faves会话变量,然后你可以在其他页面上把这些值打印出来: session_start(); echo "My user likes:

会话用法 PHP 4.0有一个一直为人所期待的特性,这就是PHP的会话支持。相比之下,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; 注册变量就等于告诉了PHP:只要会话存在,一个名叫count的变量也就同时存在。目前这个变量还没有赋值。不过,如果你对它进行加1运算的话,该值即可被赋值为1: $count++; 把以上各行代码一起考虑,实际上你已经启动了一个会话、为某个用户分配了会话id、注册了名为count的变量并把$count加1以表示用户首次访问页面: 要显示用户在当前会话下访问页面的次数,你只要打印出$count的值即可: echo "

"; ?> 这就是你要得到的:用户爱好的漂亮列表。 会话变量不能被查询字符串所覆盖,这就是说,你不能键入 这样的指令为注册会话变量$count分配新值。这一点对安全而言是非常重要的:你只能在服务器端脚本上修改或者删除会话变量。 如果你想完全删除某个会话变量,你可以从系统中取消注册该变量: session_unregister; 彻底删除某个会话,比如按下Logout按钮就是这样的例子,那么你可以写下如下的代码: session_destroy(); 使用会话来存储变量值可以让我们免于编写数据库处理代码的痛苦,这样也就不会过度增加对系统的负载,同时也减少了对专有数据库语法的使用范围,再说,你也不再非得向访问站点的用户发送一大堆cookie了。而现在呢——只需要一个cookie、一个变量就全部搞定了,真是一滴水就映出了全部光辉!实在是不能比这更简单的了。

  • $v"; } echo "

下一篇:没有了
友情链接: 网站地图
Copyright © 2015-2019 http://www.zen-40.com. mgm美高梅有限公司 版权所有