仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1273|回复: 18
打印 上一主题 下一主题

[学习教程] PHP教程之PHP利用者形态办理功效的使用

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:27:43 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
我先把我自己学习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)就好了,其它一切的信息都经由过程一个精致非常的机制来帮咱们记载,让咱们的任务变得再复杂不外了!  我想在讲述自己的学习方式前,对那些期望能从我的文章中获得有用信息的人说一句心里话:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-16 09:46

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表