如果禁用cookie会发生什么?

时间:2012-03-02 06:11:00

标签: php session cookies session-cookies

这里非常基本的问题。在PHP中,如果用户的浏览器禁用了cookie,则不能同时使用服务器cookie($_SESSION)和客户端cookie($_COOKIEsetcookie)或仅禁用后者? 基本上你不能让用户登录或做任何需要会话的事情,对吗?

此外,在哪种情况下有人想要禁用cookie?

谢谢!

3 个答案:

答案 0 :(得分:15)

是的,这是真的。会话和普通cookie都是普通的cookie。如果用户不接受cookie,则他不能使用他们启用的任何功能。这意味着整个互联网几乎会破坏该用户,这就是为什么在这个时代几乎没有人完全禁用cookie。

PHP有一个名为transparent session ids的内置机制,它自动重写所有链接以包含查询参数中的会话ID。我建议不要使用它,因为URL中的会话ID会打开一大堆蠕虫。

为方便用户使用,我建议您测试用户是否启用了Cookie(设置Cookie,重定向到下一页,其中包含Cookie 应设置的网址中的标记,看看你是否得到任何cookie)如果没有,请建议用户启用它们。

答案 1 :(得分:2)

您可以按$_GET跟踪用户。

想象一下,在用户访问的每个单页面上,您都会传递?user_id=XYZ123,然后您将实现一个非常相似的服务器标识。它有明显的缺点:

  1. 如果您复制/粘贴网址,则会泄露您的session_id
  2. 因为1次会议,高杰克甚至更少技术娴熟
  3. 为什么用户禁用Cookie?
    用户倾向于将第一方和第三方cookie全部放在混合中,但它们来自不同的品种。

    第一方cookie一般都可以。当你访问Facebook时,它预计Facebook会保存一个cookie来存储你与服务器的交互。

    不期望的是,在Facebook和eBay上添加的广告公司都会收回你的cookie并检查啊,所以这个家伙在eBay上寻找xyz所以现在他已经'在Facebook上我会告诉他abc让他买等等......

答案 2 :(得分:1)

我认为你应该阅读会议参考手册http://www.php.net/manual/en/session.idpassing.php

简而言之,如果您的服务器找不到session_id,则无法恢复会话。但您可以使用其他方式存储会话值。或者您可以根据用户的客户端环境参数生成session_od。