PHP程序员站--PHP编程开发平台
 当前位置:主页 >> PHP基础 >> 每日技巧 >> 

php中session和cookie的一些资料整理

php中session和cookie的一些资料整理

来源:phperz.com  作者:phperz.com  发布时间:2010-06-03
php中session和cookie的话题争论过N遍了,这几天面试又不止的一

php中session和cookie的话题争论过N遍了,这几天面试又不止的一次的看到这个题,今天把自己整理的资料贴给大家

首先还是要先说明一下session和cookie之间的一些特性:

session是保存在服务器端的,但sessionid是保存在客户端的。客户端禁用了cookie,session将不可用。

session需要借助cookie才能正常工作。尔cookie不需要依赖session,就可以独立工作。如果客户端完全禁止cookie,session将失效,

cookie是完全保存在客户端的, 客户端禁用了cookie,cookie将不可用。这点大家应该都没有疑问。

这两个都可以用来做会话,不同的是功能各异,

session不能区分路径,同一个用户在访问一个网站期间,所有的session在任何一个地方都可以访问到。而cookie中如果设置了路径参数,那么同一个网站中不同路径下的cookie互相是访问不到的。

session和cookie都有有效期的说法

session是放在服务器上的,过期与否取决于服务期的设定,cookie是存在客户端的,过期与否可以在cookie生成的时候设置进去。 当然cookie 也可以设置成关闭浏览器既消失.但你cookie设置的有效期再长,客户端的用户只要一删除本址cookie,你的cookie立马完玩。

不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗考虑到安全应当使用session

session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能

单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能超过3K。

一个web站点向客户端发送的cookie不得超过20个,

一个浏览器能创建的Cookie数量最多为30个,并且每个不能超过4KB

二者的一些特性现在说完了,现在主要说说上面提到的如果禁用了cookie,为什么 session不能正常工作,

我发现很多人包括我以前一直以为session和cookie是独立工作的,二者互不干扰,就最近我以发现session必须得依赖cookie才能正常工作。很困惑吧,session不是保存在服务器端的吗,为什么禁用了cookie就不能工作了,答案是这样的:

所谓的session保存在服务器端是没错,但是http是无状态的协议也就是说,但浏览器解析完一个网页后,客户端为立即断开和服务器之间的联系,那么session是凭什么知道这个会话是这个客户端的呢,这就要用到cookie了,session在开启的时候会生成一个独立的sessionid,这个sessionid是通过cookie保存在客户端的,每当客户端刷新网页,浏览器都会把这个id发给服务器端,服务器再根据这个id来找到在服务器上保存的session 信息从而识别用户,说白了,就是每次用session会话,session的内容是在服务器端保存,而他会给客户端一把用来访问这些信息的钥匙,而这个钥匙就是sessionid,

所以说当浏览器禁用了cookie, session就不能工作了,因为客户端得不到这个钥匙,他就没法去开启服务器端保存的session这个大门。


延伸阅读:
PHP中对Session和Cookie的区分与理解
php 中session和cookie的区别
PHP基础:Session与Cookie
Tags: session   cookie   php   IE   ssi   C   整理   资料  
最新文章
推荐阅读
月点击排行榜
PHP程序员站 Copyright © 2007-2010,PHPERZ.COM All Rights Reserved 粤ICP备07503606号