【发布时间】:2014-06-13 17:15:15
【问题描述】:
我知道,对于 php 中的会话,存储会话 ID 的 cookie 是在客户端设置的。客户端可以关闭这些 cookie,我认为这会使会话不起作用。如何检测客户端是否禁用了会话 cookie?
【问题讨论】:
-
...您是否尝试添加 cookie,然后查看是否可以读取?
标签: php session cookies client
我知道,对于 php 中的会话,存储会话 ID 的 cookie 是在客户端设置的。客户端可以关闭这些 cookie,我认为这会使会话不起作用。如何检测客户端是否禁用了会话 cookie?
【问题讨论】:
标签: php session cookies client
您可以使用 javascript navigator.cookieEnabled。这将返回 true 或 false。
所以
if(navigator.cookieEnabled)
//do something
else
//do something else
【讨论】:
假设您在前一页开始了会话...
<?php
if(session_status() == PHP_SESSION_ACTIVE)
{
echo 'cookies & sessions enabled';
}
else
{
echo 'no cookies or sessions';
}
?>
或者您也在寻找非会话 cookie。
<?php
if(!empty($_COOKIE))
{
echo 'cookies are tasty';
}
else
{
echo 'no cookies to eat';
}
?>
使用纯 php 解决方案,如果不在前一页设置 cookie,您将无法检查是否启用了会话/cookie
【讨论】:
如果您知道必须使用会话,通常的方法是在开始尝试设置 cookie 时立即重定向用户,然后抱怨没有在第二页上设置 cookie。
另一方面,如果您不必让某人登录,大多数情况下确实不需要会话。如果您这样做,大多数用户会明白他们需要允许 cookie,否则登录将失败。
【讨论】: