好玩的Cookie机制

一,解释
Cookie 在远程浏览器端储存数据并以此跟踪和识别用户的机制;浏览器(即客户端)通过HTTP协议和服务器端进行Cookie交互;

PHP发出命令让浏览器设置Cookie;

二,使用:
bool setcookie ( string $name [, string $value = "" [, int $expire = 0 [, string $path = "" [, string $domain = "" [, bool $secure = false [, bool $httponly = false ]]]]]] )

参数介绍:

第一个参数是必选参数,其值是Cookie的名称,即_COOKIE这个全局数组的键值。

第二个参数用来设置Cookie的值。参数为空时,Cookie值为空。由于把Cookie的值设为false会使客户端尝试删除这个Cookie,所以要在Cookie上保存true或false,不应该直接使用boolean值,而应该用0表示false,用1表示true。只要愿意,用A表示false,B表示true也是可以的。

第三个参数用来设置有效时间,以秒为单位。这个值很重要,决定了Cookie的存储方式,后面会详细讲到。

第四个参数用来设置Cookie的有效目录,默认为"/",即整个域名下有效,如果有需要,可以设置仅在某目录下有效。

第五个参数用来设置Cookie的作用域名,默认在本域名下。需要注意的是,在IE下,包括点号长度小于等于5的短域名如果带了domain参数,会导致Cookie设置失败。

第六个参数用来设置是否对Cookie进行加密传输,默认为false。如果设置为true,只要使用HTTPS,这个Cookie才会被设置。所以,通常情况下不设置此参数或使用默认值false。

第七个参数表示是否只是用HTTP访问Cookie.如果为1或者true,客户端的JavaScript就无法操作这个Cookie.使用此参数可以减少XSS攻击的风险,但注意,不是所有的浏览器都支持这个参数。此参数只在PHP5.2.0以上版本有效。(再次强调,Cookie和PHP没有任何关系,只和浏览器相关,PHP只负责跟客户端打招呼,具体的管理有客户端全程完成。)

设置Cookie时需要注意以下几点:

这两个函数有一个返回值,如果是false,代表设置失败;如果为true,代表设置成功。但是这个返回值仅供参考,不代表客户端一定能接收到。
由PHP在当前页设置的Cookie不能立即生效,要等到下一个页面才能看到。这是由于设置的这个页面里的Cookie有服务器传递个客户浏览器,在下一个页面浏览器才能把Cookie从客户的机器里取出传回服务器。如果是JavaScript设置的,是立即生效的。
Cookie没有删除函数。如果想删除Cookie,应该讲Cookie的expire设置为过期时间,如1小时前、1970年等,这会自动触发浏览器的删除机制。

三。实际应用 进行登录控制,记住用户,记住密码免登录,防止刷票!等;

IE8 一个域名下可以放50个cookie

FIREFOX 一个域名可以放150个COOKIE

四,保存位置
1.保存在文件中; 2.保存在浏览器的内存中;

五,COOKIE跨域与P3P协议

实例:单点登录;看文章:

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,854评论 18 139
  • 作者:晚晴幽草轩www.jeffjade.com/2016/10/31/115-summary-of-cookie...
    饥人谷_Dylan阅读 1,231评论 0 51
  • 背景在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称为cookie,cooki...
    时芥蓝阅读 2,381评论 1 17
  • 注:本文转载自前端大全 背景 在HTTP协议的定义中,采用了一种机制来记录客户端和服务器端交互的信息,这种机制被称...
    楠小忎阅读 687评论 0 0
  • 车马炮社群里卖象棋 为什么说车马炮社群里卖象棋是一个坑?车马炮社群就是象棋社群,象棋本身就是社群用户的标配,对象棋...
    润屋阅读 1,552评论 0 2