cookies 禁用之后,session使用

来源:互联网 发布:易语言post登录源码 编辑:程序博客网 时间:2024/05/14 12:12

Cookie:将数据存在客户端

Session:将数据存在服务器的保管箱,然后将保管箱号码(Session Id,唯一)存在客户端

有人说客户端禁用Cookie后,Session也就不能用了,一般情况下的确是这样的,但是一般情况下没有人这么做,故意去禁用Cooki,因为没必要,故意禁用Cookie的原因据说是出

于信息安全的考虑。

Cookie与 Session,是两个独立的东西,Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案。但为什么禁用Cookie就不能得到Session

呢?因为Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于失去了Session ID,也就得不到Session

了。

 一般Session会依赖Cookie,Session Id还是用Cookie存起来的,当然也有通过url存储的(一些古老的论坛,会在所有url后面加s=xxxxxxxxx,这个就是以url参数存储),但成本

比较大(需要修改各处链接)。

sessionId还可以文件化,比如说,你可以保存在XML文件里或者是直接保存在数据库里,需要的时候再从文件中取一下,一般都不会这么做,因为没必要.

我们都知道当在session会话有基于cookie和基于url两种传递SESSIONID的方法。为了实现客户端禁止cookie发送的情况也不影响客户登陆网站,可以设置php.ini中

session.use_trans_sid=1,表示当客户端浏览器禁止cookie的时候,页面上的链接会基于url传递SESSIONID。但是很多人仅仅设置了这一个选项并没有达到效果

php.ini 文件中还有两个选项

session.use_cookies=1

session.use_only_cookies=1

session.use_cookies表示是否开始基于cookies的session会话

session.use_only_cookies 表示是否只开启基于cookies的session的会话方式

所以如果想要在浏览器开启cookie的时候用基于cookie的方式,在未开启cookie的时候使用url的方式就进行如下设置(最常用的方式,推荐)

在php.ini文件中

session.use_trans_sid=1

session.use_only_cookies=0

session.use_cookies=1

或者 在php程序中

ini_set(“session.use_trans_sid”,”1″);

ini_set(“session.use_only_cookies”,0);

ini_set(“session.use_cookies”,1);

如果不管浏览器是否开启cookie,都使用url的方式就进行如下设置(这个例子主要想说明一下设置session.use_only_cookies和 session.use_cookies的区别)

在php.ini文件中

session.use_trans_sid=1

session.use_only_cookies=0

session.use_cookies=0

或者 在php程序中

ini_set(“session.use_trans_sid”,”1″);

ini_set(“session.use_only_cookies”,0);

ini_set(“session.use_cookies”,0);




0 0
原创粉丝点击