网站首页PHP学习

Cookie禁用了,Session还能用吗?

发布时间:2015-12-23编辑:admin阅读(429)

         Cookie与 Session,异样平凡感到是两个独立的东西,Session采用的是在做事器端保持状态的筹划,而Cookie采用的是在客户端保持状态的筹划。但为什么禁用Cookie就不克不迭得到Session呢?因为Session是用Session ID来确定今后对话所对应的做事器Session,而Session ID是经过进程Cookie来通报的,禁用Cookie相当于失去了Session ID,也就得不到Session了。

           是不是Cookie让禁用了,Session就一定不克不迭用了呢?

           1. ASP

           在ASP中,Session必须依靠Cookie才可用,Session是存储在做事器端的,而Cookie是存储在客户端的,相对而言,Session的安全性和可靠程度都比Cookie高。

           2. PHP

           在PHP中,经过进程相干的设置设备陈设,可以或者让Session不依靠Cookie而存在。这是因为:

           Session,储存于做事器端(默认以文件办法存储Session),根据客户端供给的Session ID来得到用户的文件,得到变量的值,Session ID可以或者利用客户端的Cookie或者Http1.1协定的Query_String(就是访问的URL的“?”前面的部分)来传送给做事器,尔后做事器读取Session的目录……。也就是说,Session ID是得到存储在做事上的Session变量的身份证。当代码session_start();运行的时候,就在做事器上产生了一个Session文件,随之也产生了与之唯一对应的一个Session ID,定义Session变量以一定形式存储在刚才产生的Session文件中。经过进程Session ID,可以或者掏出定义的变量。跨页后,为了利用Session,你必须又实行session_start();将又会产生一个Session文件,与之对应产生相应的Session ID,用这个session id是取不出前面提到的第一个Session文件中的变量的,因为这个Session ID不是打开它的“钥匙”。假如在session_start();曩昔加代码session_id($session id);将不产生新的Session文件,直接读取与这个id对应的Session文件。

           PHP中的Session在默认情况下是利用客户端的Cookie来保留Session ID的,所以当客户端的cookie出现成就的时候就会影响Session了。必须把稳的是:Session不一定必须依靠Cookie,这也是Session比较Cookie的高明的处所。当客户端的Cookie被禁用或出现成就时,PHP会自动把Session ID附着在URL中,这样再经过进程Session ID就能够跨页利用Session变量了。但这种附着也是有一定条件的,即“php.ini中的session.use_trans_sid = 1“,或者编译时打开打开了“--enable-trans-sid”选项。

           用过打扮打扮论坛t.vhao.nett.vhao.net的朋友都知道,在进入打扮打扮论坛t.vhao.nett.vhao.net的时候,往往会提示你检查Cookie可否打开,这是因为大多数打扮打扮论坛t.vhao.nett.vhao.net都是基于Cookie的,打扮打扮论坛t.vhao.nett.vhao.net用它来保留用户名、暗码等用户信息,方便利用。而且很多朋友都感到Cookie不安全(实在不是这样),往往禁用它。其实在PHP程序中,我们完备可以或者用Session来代替Cookie,它可以或者不依靠于客户端可否开启Cookie。

           所以,我们可以或者抛开Cookie利用Session,即假定用户关闭Cookie的情况下利用Session,其实现途径有以下几种:

           1. 设置php.ini设置设备陈设文件中的“session.use_trans_sid = 1”,或者编译时打开打开了“--enable-trans-sid”选项,让PHP自动跨页通报Session ID。
           2. 手动经过进程URL传值、隐藏表单通报Session ID。
           3. 用文件、数据库等形式保留Session ID,在跨页进程傍边手动调用。



    异样请关闭Cookie测试,用户名:laigw;暗码:1234;这是经由过程文件保留Session ID的,文件是:D:/tmp/phpsid.txt,请根据自己的体系决议文件名或门路。 

           总结一下,上面的办法有一个共同点,就是在前一页获得Session ID,尔后想办法通报到下一页,鄙人一页的session_start();代码曩昔加代码Session ID(传过去的Session ID)。



    收录情况:百度未收录
    本文地址:http://luvial.cn/content/10060.html
    转载请保留原文地址!

    如果您觉得本文对您有帮助,且您有经济能力,欢迎捐助本站
标签: cookie禁用
上一篇:php验证码
下一篇:一致性hash算法在内存数据库中的应用