|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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的心得,现在整理为下面,希望可以对大家有些帮助。 |
|