这里有一个基本的问题。在PHP中,如果用户的浏览器禁用了cookies,那么您无法同时使用服务器cookies ($_SESSION
) 和客户端cookies ($_COOKIE
, setcookie
),或者只有后者被禁用了?
基本上你不能让用户登录或进行任何需要会话的操作,对吧?
此外,在什么情况下会有人想要禁用cookies呢?
谢谢!
这里有一个基本的问题。在PHP中,如果用户的浏览器禁用了cookies,那么您无法同时使用服务器cookies ($_SESSION
) 和客户端cookies ($_COOKIE
, setcookie
),或者只有后者被禁用了?
基本上你不能让用户登录或进行任何需要会话的操作,对吧?
此外,在什么情况下会有人想要禁用cookies呢?
谢谢!
没错,这是真的。会话和普通cookie都是普通的cookie。如果用户不接受cookie,则无法使用其启用的任何功能。这意味着对于该用户来说,几乎整个互联网都会崩溃,这就是为什么在如今几乎没有完全禁用cookie的人的原因。
PHP有一个内置机制称为透明会话ID,它会自动重新编写所有链接,以在查询参数中包含会话ID。我不建议使用它,因为URL中的会话ID会开启一整个新的难题。
为了用户友好性,我建议您测试用户是否已启用cookie(设置cookie,重定向到下一个页面,并在URL中使用标志表明应该设置cookie,查看是否收到任何cookie),如果没有,请友好地建议用户启用它们。
$_GET
跟踪用户。?user_id=XYZ123
,那么您将实现非常相似的服务器识别。它有明显的缺点:我认为你应该阅读会话参考手册http://www.php.net/manual/en/session.idpassing.php
简而言之,如果您的服务器找不到session_id,则无法恢复会话。但是您可以使用替代方法来存储会话值。或者您可以基于用户的客户端环境参数生成session_id。