仓酷云
标题:
PHP教程之PHP利用者形态办理功效的使用
[打印本页]
作者:
再见西城
时间:
2015-2-4 00:27
标题:
PHP教程之PHP利用者形态办理功效的使用
我先把我自己学习PHP的过程做一下概括: 利用者形态办理(session support)是 PHP 4.0 一个让人人等候已久的新功效。在 PHP 3.0 的时期,法式设计员必需利用其它人写好的函式库来实作形态办理功效,或就爽性保持这项功效不必算了。而形态办理功效的缺少现实上是 PHP 3.0 最使人感应绝望的中央之一。不外如今情况已失掉改动,从 PHP 4.0 的初期测试版入手下手,利用者形态办理便已成为 PHP 内建的功效之一了。
你可使用形态办理功效来办理利用者从进入网站入手下手一向到分开网站为止这段时代内的一切相干变量(只需利用者没有分开网站,那末这些变量就都可以取用,不会由于利用者分开某个单一页面而形成材料消逝),而不需求贮存很多cookie 或利用埋没窗体字段,乃至将这些变量贮存在数据库外面,形成数据库办事器的大批负荷。
一旦你在网站中的某一页激活形态办理,PHP 引擎便会入手下手记载利用者形态(假如对这个利用者来讲体系还没入手下手记载该会见者的形态的话),或持续记载某个先前已激活的利用者形态。要激活 PHP 的形态办理功效,你可使用上面这个语法:
session_start();
一旦激活形态办理,PHP 会经由过程 cookie 传送一个举世无双的形态代码(这个代码看起来会像是:940f8b05a40d5119c030c9c7745aead9)给利用者,同时在办事器这端,PHP 引擎会主动发生一个档名与形态代码绝对应的暂存文本文件(如:sess_940f8b05a40d5119c030c9c7745aead9),该档案会用来贮存法式设计员在这个利用者形态记载中所注册的一切变量。
谈到利用者形态办理,最常利用的例子即是一个页面存取计数器(access counter)了:如今我就入手下手教人人撰写 PHP 法式代码。
出格注重
在你测验考试激活利用者形态记载之前,万万不克不及够输入任何内容(不克不及有空格,TAB 乃至换行等等空格符,也不克不及有任何 HTML 卷标,任何内容都不可)给阅读器。这是由于形态办理相干函数会送出 HTTP 表头(header)信息给阅读器,假如在送出 HTTP 表头信息给阅读器之前已有其它内容被输入的话,体系将会呈现毛病讯息。
假如该利用者的形态办理还没有被激活的话,上面这行法式便会激该死利用者的形态办理:
session_start();
接上去,注册一个名为count的变量:
session_register('count');
一旦你注册了一个变量,PHP 便会在从利用者进入网站一向到分开网站的全部阅读过程当中主动替你保护这个变量的值,你可以随时取用这些注册过的变量。刚注册好的变量并没有指定任何值给它,不外一旦咱们增添 count 变量的值,它的值便会是 1 了:
$count++;
把这些法式代码组合起来,咱们的法式代码就会做上面这些工作了:激活利用者形态记载功效(假如对该利用者而言还没有激活的话),指定一个举世无双的形态代码(session id)给该利用者,注册一个名为 count 的变量,而且在每次利用者阅读到该页面的时分,将变量 $count 的值加一,这个值就能够用来纪录该利用者阅读过该页面的次数了。
假如要将利用者此次的阅读过程中旁观了该页面几何次,咱们只需求将变量$count 的值列印出来就好了:
echo "<P>您已阅读这个页面$count 次了。</p>";
完全的页面阅读计数器法式代码看起来就像如许:
<?session_start();
session_register('count');
$count++;
echo "<P>您已阅读这个页面 $count 次了。</p>";
?>
假如你不休从头加载这个页面,你会发明画面上显示的阅读次数会不休的增添。除注册纯真的变量之外,咱们也能够注册一个数组(array)到利用者形态记载中。假定咱们有上面这个名为 $faves 的数组:
$faves = array ('古典音乐','旅游','唱歌','Linux');
注册数组的做法和注册其它纯真变量是完整一样的:
session_register('faves');
注册完成数组今后,在往后的法式代码外面要参照到该数组的做法也没有任何分歧,只需纯真地叫用 $faves 这个变量就好了。假定你的利用者在网站中某个页面窗体外头选择了一些他所喜好的器材,并且你将这些项目经由过程 $faves 数组注册到该利用者的形态记载外面,那末在网站中其它页面你可以很轻易地把这些项目显示在画面上:
<?
session_start();
echo "我的访客喜好的器材是:<ul>";
while (list($v) = each ($faves)) {
echo "<li>$v</li>"; }
echo "</ul>";
?>
就这么悄悄松松的,你就能够把访客喜好的器材显示在网页上了。
利用者形态记载所注册的变量是没法用查询字符串(query string)来盖过的,例如说,利用者没法直接在阅读器的地址列输出上面的 URL:
http:///www.yourdomain.com/yourscript.php?count=56 来妄图盖过本来注册在利用者形态记载中的 $count 变量的值。这是一个十分主要的平安不雅念:只要你本人可以在你的法式外面注册或删除利用者形态记载中的变量,其它利用者没法经由过程 URL 前面的查询字符串妄图搅浑这些变量的值。
要删除本来注册过的利用者形态变量,你可使用上面的语法:
session_unregister('count');
要将全部利用者形态记载变量全体删除而且中断记载,请利用上面的语法:
session_destroy();
结语:
恰当地善用利用者形态记载功效的优点多多:它可让咱们不须将利用者形态材料贮存在数据库中,削减数据库办事器的负荷。它也能够让咱们不需求本人撰写长长的法式代码来经由过程 cookie 记载这些利用者形态变量(并且,如许一来咱们也不必在网站的隐私权声明外头花上很长的篇幅来注释为何当利用者登入网站的时分,咱们要贮存五十个 cookie 到他们的硬盘外面去了)。这项功效让咱们只需求一个 cookie 来贮存一个变量(session id)就好了,其它一切的信息都经由过程一个精致非常的机制来帮咱们记载,让咱们的任务变得再复杂不外了! 我想在讲述自己的学习方式前,对那些期望能从我的文章中获得有用信息的人说一句心里话:
作者:
若天明
时间:
2015-2-4 13:09
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者:
第二个灵魂
时间:
2015-2-9 23:05
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
作者:
简单生活
时间:
2015-2-9 23:05
,熟悉html,能用div+css,还有javascript,优先考虑linux。我在开始学习的时候,就想把这些知识一起学习,我天真的认为同时学习能够互相呼应,因为知识是相通的。
作者:
精灵巫婆
时间:
2015-2-26 06:31
做为1门年轻的语言,php一直很努力。
作者:
再现理想
时间:
2015-3-8 12:26
至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。
作者:
活着的死人
时间:
2015-3-11 14:14
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
作者:
山那边是海
时间:
2015-3-18 18:08
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者:
飘飘悠悠
时间:
2015-3-22 20:07
先学习php和mysql,还有css(html语言很简单)我认为现在的效果比以前的方法好。
作者:
爱飞
时间:
2015-3-26 11:27
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
作者:
分手快乐
时间:
2015-4-1 21:08
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
作者:
admin
时间:
2015-4-6 17:03
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
作者:
柔情似水
时间:
2015-4-13 19:22
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
作者:
小女巫
时间:
2015-4-21 14:27
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
作者:
海妖
时间:
2015-4-24 21:44
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
作者:
深爱那片海
时间:
2015-5-6 05:09
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
作者:
谁可相欹
时间:
2015-6-5 23:45
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
作者:
乐观
时间:
2015-6-14 20:19
最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。
作者:
小魔女
时间:
2015-6-17 01:14
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
欢迎光临 仓酷云 (http://ckuyun.com/)
Powered by Discuz! X3.2