仓酷云

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

[学习教程] PHP网页设计Cookie及其利用(二)

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
#
发表于 2015-2-4 00:20:28 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
把例子全部敲进去试验,完成一遍以后就会有心得了,因为你会发现为啥我的程序和书上的一模一样就是结果不正确。新手学习的时候必须承认,不容易,因为我也是过来人,你会发现原来有那么多常用的语句,函数都要记。cookie   上一局部讲了有关Cookie的手艺后台,这局部来讲说在PHP里若何设置、利用、删除Cookie,及Cookie的一些限制。PHP对Cookie撑持是通明的,用起来十分便利。

1、设置Cookie

PHP用SetCookie函数来设置Cookie。必需注重的一点是:Cookie是HTTP协定头的一局部,用于阅读器和办事器之间传递信息,所以必需在任何属于HTML文件自己的内容输入之前挪用Cookie函数。
SetCookie函数界说了一个Cookie,而且把它附加在HTTP头的前面,SetCookie函数的原型以下:
int SetCookie(string name, string value, int expire, string path, string domain, int secure);
除name以外一切的参数都是可选的。value,path,domain三个参数可以用空字符串代换,暗示没有设置;expire 和 secure两个参数是数值型的,可以用0暗示。expire参数是一个尺度的Unix工夫标志,可以用time()或mktime()函数获得,以秒为单元。secure参数暗示这个Cookie是不是经由过程加密的HTTPS协定在收集上传输。
以后设置的Cookie不是当即失效的,而是要比及下一个页面时才干看到.这是因为在设置的这个页面里Cookie由办事器传递给客户阅读器,鄙人一个页面阅读器才干把Cookie从客户的机械里掏出传回办事器的缘由。
在统一个页面设置Cookie,实践是从后往前,所以假如要在拔出一个新的Cookie之前删失落一个,你必需先写拔出的语句,再写删除的语句,不然能够会呈现不但愿的了局。
来看几个例子:
复杂的:
SetCookie("MyCookie", "Value of MyCookie");
带生效工夫的:
SetCookie("WithExpire", "Expire in 1 hour", time()+3600);//3600秒=1小时
甚么都有的:
SetCookie("FullCookie", "Full cookie value", time()+3600, "/forum", ".phpuser.com", 1);

这里还有一点要申明的,好比你的站点有几个分歧的目次,那末假如只用不领路径的Cookie的话,在一个目次下的页面里设的Cookie在另外一个目次的页面里是看不到的,也就是说,Cookie是面向途径的。实践上,即便没有指定途径,WEB办事器会主动传递以后的途径给阅读器的,指定途径会强迫办事器利用设置的途径。处理这个成绩的举措是在挪用SetCookie时加上途径和域名,域名的格局可所以“www.phpuser.com”,也可是“.phpuser.com”。
SetCookie函数里暗示value的局部,在传递时会主动被encode,也就是说,假如value的值是“test value”在传递时就酿成了“test%20value”,跟URL的办法一样。固然,关于法式来讲这是通明的,由于在PHP吸收Cookie的值时会主动将其decode。
假如要设置同名的多个Cookie,要用数组,办法是:
SetCookie("CookieArray[]", "Value 1");
SetCookie("CookieArray[]", "Value 2");

SetCookie("CookieArray[0]", "Value 1");
SetCookie("CookieArray[1]", "Value 2");

2、吸收和处置Cookie

PHP对Cookie的吸收和处置的撑持十分好,是完整主动的,跟FORM变量的准绳一样,出格复杂。
好比设置一个名为MyCookier的Cookie,PHP会主动从WEB办事器吸收的HTTP头里把它剖析出来,并构成一个与通俗变量一样的变量,名为$myCookie,这个变量的值就是Cookie的值。数组一样合用。别的一个举措是援用PHP的全局变量$HTTP_COOKIE_VARS数组。
分离举例以下:(假定这些都在之前的页面里设置过了,而且依然无效)
echo $MyCookie;
echo $CookieArray[0];
echo count($CookieArray);
echo $HTTP_COOKIE_VARS["MyCookie"];
就这么复杂。

3、删除Cookie

要删除一个已存在的Cookie,有两个举措:
一是挪用只带有name参数的SetCookie,那末名为这个name的Cookie将被从关系户机上删失落;另外一个举措是设置Cookie的生效工夫为time()或time()-1,那末这个Cookie在这个页面的阅读完以后就被删除(实际上是生效了)。
要注重的是,当一个Cookie被删除时,它的值在以后页在依然无效的。

4、利用Cookie的限制

起首是必需在HTML文件的内容输入之前设置;
其次分歧的阅读器对Cookie的处置纷歧致辞,且有时会呈现毛病的了局。好比:MS IE+SERVICE PACK 1不克不及准确处置带域名和途径的Cookie,Netscape Communicator 4.05和MS IE 3.0不克不及准确处置不领路径和工夫的Cookie。至于MS IE 5 好象不克不及处置带域名、途径和工夫的Cookie。这是我在设计本站的页面时发明的。
第三个限制是在客户真个。一个阅读器能创立的Cookie数目最多为30个,而且每一个不克不及超越4KB,每一个WEB站点能设置的Cookie总数不克不及超越20个。


关于Cookie的话题,就说到这儿了。

(因为Cookie最后由Netscape界说的,所以附上Netscape公司关于Cookie的官方原始界说的网址:http://www.netscape.com/newsref/std/cookie_spec.html)
  最近陆续的有人问我学习php的心得,现在整理为下面,希望可以对大家有些帮助。
因胸联盟 该用户已被删除
18#
发表于 2015-6-6 19:37:35 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
再现理想 该用户已被删除
17#
发表于 2015-6-6 14:10:02 | 只看该作者
找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。
分手快乐 该用户已被删除
16#
发表于 2015-6-6 02:11:11 | 只看该作者
我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
若天明 该用户已被删除
15#
发表于 2015-5-7 02:00:42 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
活着的死人 该用户已被删除
14#
发表于 2015-5-4 09:44:16 | 只看该作者
学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。
冷月葬花魂 该用户已被删除
13#
发表于 2015-4-16 21:09:27 | 只看该作者
当然这种网站的会员费就几十块钱。
只想知道 该用户已被删除
12#
发表于 2015-3-25 06:22:29 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
金色的骷髅 该用户已被删除
11#
发表于 2015-3-23 22:48:37 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
乐观 该用户已被删除
10#
发表于 2015-3-23 19:40:25 | 只看该作者
说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。
变相怪杰 该用户已被删除
9#
发表于 2015-3-22 16:50:18 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
透明 该用户已被删除
8#
发表于 2015-3-17 23:09:01 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
再见西城 该用户已被删除
7#
发表于 2015-3-11 07:21:12 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
山那边是海 该用户已被删除
6#
发表于 2015-3-10 21:20:12 | 只看该作者
曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线  \\\\\\\'_\\\\\\\' ;
精灵巫婆 该用户已被删除
5#
发表于 2015-3-10 17:27:26 | 只看该作者
写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。
老尸 该用户已被删除
地板
发表于 2015-3-6 21:46:32 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
小魔女 该用户已被删除
板凳
发表于 2015-3-4 03:37:01 | 只看该作者
作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。
简单生活 该用户已被删除
沙发
发表于 2015-2-14 00:54:10 | 只看该作者
做为1门年轻的语言,php一直很努力。
兰色精灵 该用户已被删除
楼主
发表于 2015-2-5 22:46:45 | 只看该作者
有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-10 22:57

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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