如果 Cookie 被禁用会怎样?

What happens if cookies are disabled?

提问人:federico-t 提问时间:3/2/2012 更新时间:5/20/2013 访问量:13567

问:

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

另外,在哪种情况下,有人希望禁用 cookie?

谢谢!

php 会话 cookie

评论


答:

2赞 Frankie 3/2/2012 #1

您可以通过以下方式跟踪用户。$_GET

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

  1. 如果您复制/粘贴 URL,您将泄露您的session_id
  2. 因为 1 节课高杰克更不懂技术

为什么用户要禁用 Cookie?
用户倾向于将第一方和第三方 cookie 全部混合在一起,但它们来自不同的品种。

第一方 Cookie 通常没问题。当您访问 Facebook 时,Facebook 应保留一个 cookie 来存储您与服务器的交互。

没想到的是,在 Facebook 和 eBay 上都添加的广告公司会取回你的 cookie 并检查,啊,所以这家伙在 eBay 上寻找 xyz,所以现在他在 Facebook 上,我要给他看 abc 让他买等等......

15赞 deceze 3/2/2012 #2

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

PHP 有一个称为透明会话 ID 的内置机制,它会自动重写所有链接以在查询参数中包含会话 ID。我不建议使用它,因为 URL 中的会话 ID 会打开一个全新的蠕虫罐头。

为了用户友好性,我建议您测试用户是否启用了 cookie(设置 cookie,重定向到下一页,并在 URL 中带有应设置 cookie 的标志,看看您是否取回了任何 cookie),如果没有,请建议用户启用它们。

评论

0赞 Ben 3/2/2012
+1 这个答案。随机的想法..您认为trans-sid与SSL结合使用是可以接受的吗?(因为查询参数是SSL的)?
0赞 Joachim Isaksson 3/2/2012
@Ben 问题不在于缺少SSL,而是用户不会理解URL包含会话,并将包含trans-sid的URL发送给朋友。单击该链接将以用户身份登录该朋友。
0赞 deceze 3/2/2012
@Ben 编号问题不在于可见性。如果有人能够拦截任何一个 cookie,它就像一个 URL 一样可见。问题在于共享 URL、将它们放在浏览器历史记录中等。
0赞 Ben 3/2/2012
@both。是的,非常好的观点,我完全忽略了这方面
0赞 Boann 3/2/2012
我完全禁用了 cookie。我逐个站点启用它们。还不错。
1赞 Electronick 3/2/2012 #3

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

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