提问人:federico-t 提问时间:3/2/2012 更新时间:5/20/2013 访问量:13567
如果 Cookie 被禁用会怎样?
What happens if cookies are disabled?
问:
这是一个非常基本的问题。在PHP中,如果用户的浏览器禁用了cookie,则不能同时使用服务器cookie()和客户端cookie(,)或仅禁用后者?
基本上,您不能让用户登录或执行任何需要会话的事情,对吗?$_SESSION
$_COOKIE
setcookie
另外,在哪种情况下,有人希望禁用 cookie?
谢谢!
答:
您可以通过以下方式跟踪用户。$_GET
想象一下,在用户访问的每个页面上,您都会传递一个,那么您将实现一个非常相似的服务器标识。它有明显的缺点:?user_id=XYZ123
- 如果您复制/粘贴 URL,您将泄露您的session_id
- 因为 1 节课高杰克更不懂技术
为什么用户要禁用 Cookie?
用户倾向于将第一方和第三方 cookie 全部混合在一起,但它们来自不同的品种。
第一方 Cookie 通常没问题。当您访问 Facebook 时,Facebook 应保留一个 cookie 来存储您与服务器的交互。
没想到的是,在 Facebook 和 eBay 上都添加的广告公司会取回你的 cookie 并检查,啊,所以这家伙在 eBay 上寻找 xyz,所以现在他在 Facebook 上,我要给他看 abc 让他买等等......
是的,这是真的。会话和普通 Cookie 都是普通 Cookie。如果用户不接受 cookie,则无法使用它们启用的任何功能。这意味着几乎整个互联网都会为该用户中断,这就是为什么在这个时代几乎没有人完全禁用 cookie。
PHP 有一个称为透明会话 ID 的内置机制,它会自动重写所有链接以在查询参数中包含会话 ID。我不建议使用它,因为 URL 中的会话 ID 会打开一个全新的蠕虫罐头。
为了用户友好性,我建议您测试用户是否启用了 cookie(设置 cookie,重定向到下一页,并在 URL 中带有应设置 cookie 的标志,看看您是否取回了任何 cookie),如果没有,请建议用户启用它们。
评论
我认为您应该阅读会话参考手册 http://www.php.net/manual/en/session.idpassing.php
简而言之,如果您的服务器找不到session_id,则无法恢复会话。但是,您可以使用其他方法来存储会话值。或者,您可以根据用户的客户端环境参数生成session_od。
评论