PHP检测会话cookie是否被禁用

时间:2014-06-13 17:15:15

标签: php session cookies client

我知道在php中使用会话时,会在客户端设置存储会话ID的cookie。客户端可以关闭这些cookie,我认为这会使会话无效。如何检测客户端是否已禁用会话cookie?

3 个答案:

答案 0 :(得分:0)

您可以使用javascript navigator.cookieEnabled。这会返回truefalse

所以

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。

  1. 用户转到http://www.example.com
  2. 系统设置一个cookie(可能只启动会话,也许是一个专用的测试cookie)。
  3. 系统重定向到http://www.example.com/?cookietest=true
  4. 在该页面上,如果未发送回cookie,请向用户投诉。
  5. 另一方面,大多数情况下,如果您不需要登录某人,则不需要会话。如果您这样做,大多数用户将理解他们需要允许cookie,否则登录将失败。