您的位置:首页 > 编程语言 > PHP开发

php 会话控制(关于cookie的维护与生命周期)

2017-05-24 17:17 501 查看

cookie是在服务器端被创建并写回到客户端浏览器,浏览器接到响应头中关于写cookie的指令则在本地临时文件中。

 

cookie内容的存储是键值对的方式,键和值都只能是字符串

 

函数原型:setcookie(name, value, expire, path, domain);

 

注释:cookie标题头必须在发送其他标题头之前发送,否则就无效(这是cookie的限制,而不是PHP的限制)。

 

cookie的维护

    cookie有四个标识符:cookie的name,domain,path,secure标记。要想在将来改变这个cookie的值,需要发送另一个具有相同cookie name,domain,path的Set-Cookie消息头,这将以一个新的值来覆盖原来cookie的值。然而,如果仅仅只是改变这些选项的某一个也会创建一个完全不同的cookie。

 

cookie失效时间

    可以设置过期时间,如果不设置则是会话级别的,即关闭浏览器就会消失。

    当cookie创建时包含了失效日期,这个失效日期则关联了以name-domain-path-secure为标识的cookie。

    要改变一个cookie的失效日期,你必须指定同样的组合。

    当改变一个cookie的值时,你不必每次都设置失效日期,因为它不是cookie标识信息的组成部分

    只有手工改变cookie的失效日期,否则其失效日期不会改变。

    这意味着在同一个会话中,一个会话cookie可以变成一个持久化cookie(一个可以在多个会话中存在的),反之则不可。为了要将一个持久化cookie变为一个会话cookie,你必须删除这个持久化cookie,这只要设置它的失效日期为过去某个时间之后再创建一个同名的会话cookie就可以实现。

 

****需要记得的是失效日期是以浏览器运行的电脑上的系统时间为基准进行核实的。没有任何办法来来验证这个系统时间是否和服务器的时间同步,所以当服务器时间和浏览器所处系统时间存在差异时这样的设置会出现错误。****

 

cookie自动删除

    会话cooke(Session cookie)在会话结束时(浏览器关闭)会被删除
    持久化cookie(Persistent cookie)在到达失效日期时会被删除

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: