PHP网页设计Cookie及其利用(二)
把例子全部敲进去试验,完成一遍以后就会有心得了,因为你会发现为啥我的程序和书上的一模一样就是结果不正确。新手学习的时候必须承认,不容易,因为我也是过来人,你会发现原来有那么多常用的语句,函数都要记。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", "Value 1");
SetCookie("CookieArray", "Value 2");
2、吸收和处置Cookie
PHP对Cookie的吸收和处置的撑持十分好,是完整主动的,跟FORM变量的准绳一样,出格复杂。
好比设置一个名为MyCookier的Cookie,PHP会主动从WEB办事器吸收的HTTP头里把它剖析出来,并构成一个与通俗变量一样的变量,名为$myCookie,这个变量的值就是Cookie的值。数组一样合用。别的一个举措是援用PHP的全局变量$HTTP_COOKIE_VARS数组。
分离举例以下:(假定这些都在之前的页面里设置过了,而且依然无效)
echo $MyCookie;
echo $CookieArray;
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的心得,现在整理为下面,希望可以对大家有些帮助。 有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。 做为1门年轻的语言,php一直很努力。 作为一个合格的coder 编码的规范是必须,命名方面我推崇“驼峰法”,另外就是自己写的代码最好要带注释,不然时间长了,就算是自己的代码估计看起来都费事,更不用说别人拉。 多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。 写js我最烦的就是 ie 和 firefox下同样的代码 结果显示的结果千差万别,还是就是最好不要用遨游去调试,因为有时候遨游是禁用js的,有可能代码是争取结果被遨游折腾的认为是代码写错。 曾经犯过一个很低级的错误,我在文件命名的时候用了一个横线\\\\\\\'-\\\\\\\' 号,结果找了好几个小时的错误,事实是命名的时候 是不能用横线 \\\\\\\'-\\\\\\\' 的,应该用的是下划线\\\\\\\'_\\\\\\\' ; php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会) 因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax 学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql 说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。 使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。 微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。 当然这种网站的会员费就几十块钱。 学好程序语言,多些才是王道,写两个小时代码的作用绝对超过看一天书,这个我是深有体会(顺便还能练打字速度)。 对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。 我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能: 找到的的资料很多都是在论坛里的,需要注册,所以我一般没到一个论坛都注册一个id,所有的id都注册成一样的,这样下次再进来的时候就不用重复注册啦。当然有些论坛的某些资料是需要的付费的。 个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
页:
[1]