我知道在php中使用会话时,会在客户端设置存储会话ID的cookie。客户端可以关闭这些cookie,我认为这会使会话无效。如何检测客户端是否已禁用会话cookie?
答案 0 :(得分:0)
您可以使用javascript navigator.cookieEnabled
。这会返回true
或false
。
所以
if(navigator.cookieEnabled)
//do something
else
//do something else
答案 1 :(得分:0)
假设您在上一页开始了一个会话...
<?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是否已启用
答案 2 :(得分:0)
如果你知道你必须使用会话,通常的做法是在尝试设置cookie时立即重新定向用户,然后抱怨没有在第二页上设置cookie。
另一方面,大多数情况下,如果您不需要登录某人,则不需要会话。如果您这样做,大多数用户将理解他们需要允许cookie,否则登录将失败。