仓酷云

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

[学习教程] PHP教程之PHP中Cookie及其利用

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:56:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
说说这一个月左右的学习情况和心得吧!我个人认为,既然决定了去做一件事,那就要以认真的态度去对待!既然决定来学习了,那不管当初是抱着怎样的心态来到这个培训班的,都要让自己认真的投入到学习中。cookie     Cookie手艺是一个十分有争议的手艺,自经出生它就成了宽大收集用户和Web开辟人员的一个争辩核心。有一些收集用户,乃至包含一些资深的Web专家也对它的发生和推行感应不满,这倒不是由于Cookie手艺的功效太弱或其余手艺功能上的缘由,而仅仅是由于他们感觉Cookie 的利用,对收集用户的隐私组成了伤害。由于Cookie是由Web办事器保留在用户阅读器上的小文本文件,它包括有关用户的信息(如身份辨认号码、暗码、用户在Web站点上购物的体例或用户会见该站点的次数)。

  那末Cookie 手艺事实如何呢?是不是真的给收集用户带来了团体隐私的伤害呢?仍是让咱们看了上面的内容,再做回覆吧。

  (1)Cookie手艺简介

   在WEB手艺开展史上,Cookie手艺的呈现是一个严重的厘革。最早是Netscape在它的Netscape Navigator阅读器中引入了Cookie手艺,从那时起,World Wide Web 协会就入手下手撑持Cookie尺度。今后又经由微软的鼎力推行(由于微软的IIS Web办事器所采取的ASP手艺很大水平的利用了Cookie手艺),即在微软的Internet Explorer阅读器中完整撑持Cookie手艺。到如今,绝大多半的阅读器都撑持Cookie手艺,或最少兼容Cookie手艺的利用。

  1)甚么是Cookie?

  依照Netscape官方文档中的界说,Cookie是在HTTP协定下,办事器或剧本可以保护客户任务站上信息的 一种体例。Cookie 是由Web办事器保留在用户阅读器上的小文本文件,它可以包括有关用户的信息(如身份辨认号码、暗码、用户在Web站点购物的体例或用户会见该站点的次数)。不管什么时候用户链接到办事器,Web站点都可以会见Cookie信息。

  浅显地讲,阅读器用一个或多个限制的文件来撑持Cookie。这些文件在利用Windows操作体系的机械上叫做Cookie 文件,在Macintosh机械上叫做magic Cookie 文件,这些文件被网站用来在下面存储Cookie数据。

  网站可以在这些Cookie 文件中拔出信息,如许对有些收集用户就有些反作用。有些用户以为这形成了对团体隐私的侵占,更糟的是,有些人以为Cookie是对团体空间的侵犯,并且会对用户的盘算机带来平安性的伤害。

  今朝有些Cookie 是一时的,另外一些则是延续的。一时的Cookie只在阅读器上保留一段划定的工夫,一旦超越划定的工夫该Cookie就会被体系排除。例如在PHP中Cookie被用来跟踪用户历程直到用户分开网站。延续的Cookie则保留在用户的Cookie文件中,下一次用户前往时,依然可以对它停止挪用。

  在Cookie文件中保留Cookie,一些用户会过度地以为这将带来很大的成绩。次要是有些用户忧虑Cookie会跟踪用户网上冲浪的习气,比如用户喜欢到那些类型的站点、爱从事些甚么举动等。惧怕这类团体信息一旦落入一些心怀叵测的家伙手中,那末团体也便可能成为一大堆告白渣滓的对象,乃至遭到不测的伤害。不外,这类忧虑压根儿不会产生,由于网站之外的用户是没法跨过网站来取得Cookie信息的。所以想以这类目标来使用Cookie是不成能的。不外,因为一些用户毛病的了解和“耳食之言”,一些阅读器开辟商别无选择,只好作出了解的呼应(例如Netscape Navigator4.0和Internet Explorer3.0都供应了屏障Cookie 的选项)。

  对Cookie手艺等候了这么久的了局是,迫使很多阅读器开辟商在它们的阅读器中供应了对Cookie的天真性掌握功效。例如,今朝的两大主流阅读器Netscape Navigator 和 Internet Explorer是如许处置Cookie的:Netscape Navigator4.0不仅可以承受Cookie停止正告,并且还可以屏障失落Cookie;InternetExplorer3.0也能够屏障Cookie,但在Internet Explorer4.0中就只能停止承受正告而没有供应屏障选项,不外在Internet Explorer4.0以后的更新版本中又到场了屏障Cookie的功效选项。

  另外,良多最新的手艺乃至已可以在不克不及屏障Cookie的阅读器长进行Cookie的屏障了。例如,可以经由过程将Cookie文件设置成分歧的类型来限制Cookie的利用。然而,十分不幸地是,如果你想完整屏障Cookie的话,一定会因而回绝很多的站点页面。由于现今已有很多Web站点开辟人员爱上了Cookie手艺的壮大功效,

  例如Session对象的利用就离不开Cookie的撑持。

  虽然明天仍有一些收集用户关于Cookie的争辩乐此不倦,然而关于绝大多半的收集用户来讲仍是偏向于承受Cookie的。因而,咱们尽可以宁神地利用Cookie手艺来开辟咱们的WEB页面。

  2)Cookie是如何任务的?

  要懂得Cookie,必不成少地要晓得它的任务道理。普通来讲,Cookie经由过程HTTP Headers从办事器端前往到阅读器上。起首,办事器端在呼应中使用Set-Cookie header来创立一个Cookie ,然后,阅读器在它的恳求中经由过程Cookie header包括这个已创立的Cookie,而且反它前往至办事器,从而完成阅读器的论证。

  例如,咱们创立了一个名字为login的Cookie来包括会见者的信息,创立Cookie时,办事器真个Header 以下面所示,这里假定会见者的注册名是“Michael Jordan”,同时还对所创立的Cookie的属性如path、domain、expires等停止了指定。

  Set-Cookie:login=Michael Jordan;path=/;domain=msn.com;

    expires=Monday,01-Mar-99 00:00:01 GMT

  下面这个Header会主动在阅读器端盘算机的Cookie文件中添加一笔记录。阅读器将变量名为“login”的Cookie赋值为“Michael Jordon”。注重,在实践传递过程当中这个Cookie的值是经由了URLEncode办法的URL编码操作的。 这个含有Cookie值的HTTP Header被保留到阅读器的Cookie文件后,Header就告诉阅读器将Cookie经由过程恳求以疏忽途径的体例前往到办事器,完成阅读器的认证操作。

  另外,咱们利用了Cookie的一些属性来限制该Cookie的利用。例如Domain属功能够在阅读器端对Cookie发送停止限制,详细到下面的例子,该Cookie只能转达室到指定的办事器上,而决不会跑到其他的如www.hp.com的Web站点上去。Expires属性则指定了该Cookie保留的工夫刻日,例如下面的Cookie在阅读器上只保留到1999年3月1日1秒。固然,假如阅读器上Cookie 太多,超越了体系所答应的局限,阅读器将主动对它停止删除。至于属性Path,用来指定Cookie将被发送到办事器的哪个目次途径下。

  申明:阅读器创立了一个Cookie后,关于每个针对该网站的恳求,城市在Header中带着这个Cookie;

  不外,关于其他网站的恳求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[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的官方原始界说的网址:

  _spec.html" target=_blank>http://www.netscape.com/newsref/std/cookie_spec.html应该大致熟悉了一些学习过程,也许我的过程和你的有些出路,但是不管怎么样是殊途同归,我写这么多,也只是给大家一个借鉴的机会,至于好与不好,默默不敢打包票^0^
admin 该用户已被删除
沙发
发表于 2015-2-4 07:03:13 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
冷月葬花魂 该用户已被删除
板凳
 楼主| 发表于 2015-2-8 03:43:15 | 只看该作者
本文当是我的笔记啦,遇到的问题随时填充
变相怪杰 该用户已被删除
地板
发表于 2015-2-9 03:03:22 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
简单生活 该用户已被删除
5#
发表于 2015-2-21 19:46:14 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
小妖女 该用户已被删除
6#
发表于 2015-3-13 09:09:57 | 只看该作者
对于懒惰的朋友,我推荐php的集成环境xampp或者是wamp。这两个软件安装方便,使用简单。但是我还是强烈建议自己动手搭建开发环境。
深爱那片海 该用户已被删除
7#
发表于 2015-3-20 17:54:34 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
分手快乐 该用户已被删除
8#
发表于 2015-3-22 04:09:36 | 只看该作者
有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。
因胸联盟 该用户已被删除
9#
发表于 2015-3-22 17:09:49 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
再见西城 该用户已被删除
10#
发表于 2015-3-25 03:17:16 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
金色的骷髅 该用户已被删除
11#
发表于 2015-3-27 03:09:52 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
第二个灵魂 该用户已被删除
12#
发表于 2015-4-1 12:08:57 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
精灵巫婆 该用户已被删除
13#
发表于 2015-4-26 00:09:18 | 只看该作者
学习php的目的往往是为了开发动态网站,phper就业的要求也涵盖了很多。我大致总结为:精通php和mysql
谁可相欹 该用户已被删除
14#
发表于 2015-5-1 08:10:37 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
透明 该用户已被删除
15#
发表于 2015-5-3 14:47:16 | 只看该作者
再就是混迹于论坛啦,咱们的phpchina的论坛就很强大,提出的问题一般都是有达人去解答的,以前的帖子也要多看看也能学到不少前辈们的经验。别的不错的论坛例如php100,javaeye也是很不错的。
愤怒的大鸟 该用户已被删除
16#
发表于 2015-5-9 14:04:08 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
兰色精灵 该用户已被删除
17#
发表于 2015-5-10 22:40:32 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
若相依 该用户已被删除
18#
发表于 2015-6-14 01:26:09 | 只看该作者
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
19#
发表于 2015-6-17 20:48:22 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
爱飞 该用户已被删除
20#
发表于 2015-6-20 01:35:57 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-13 12:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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