这里非常基本的问题。在PHP中,如果用户的浏览器禁用了cookie,则不能同时使用服务器cookie($_SESSION
)和客户端cookie($_COOKIE
,setcookie
)或仅禁用后者?
基本上你不能让用户登录或做任何需要会话的事情,对吗?
此外,在哪种情况下有人想要禁用cookie?
谢谢!
答案 0 :(得分:15)
是的,这是真的。会话和普通cookie都是普通的cookie。如果用户不接受cookie,则他不能使用他们启用的任何功能。这意味着整个互联网几乎会破坏该用户,这就是为什么在这个时代几乎没有人完全禁用cookie。
PHP有一个名为transparent session ids的内置机制,它自动重写所有链接以包含查询参数中的会话ID。我建议不要使用它,因为URL中的会话ID会打开一大堆蠕虫。
为方便用户使用,我建议您测试用户是否启用了Cookie(设置Cookie,重定向到下一页,其中包含Cookie 应设置的网址中的标记,看看你是否得到任何cookie)如果没有,请建议用户启用它们。
答案 1 :(得分:2)
您可以按$_GET
跟踪用户。
想象一下,在用户访问的每个单页面上,您都会传递?user_id=XYZ123
,然后您将实现一个非常相似的服务器标识。它有明显的缺点:
为什么用户禁用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。