【问题标题】:PHP detect if session cookies are disabledPHP检测会话cookie是否被禁用
【发布时间】:2014-06-13 17:15:15
【问题描述】:

我知道,对于 php 中的会话,存储会话 ID 的 cookie 是在客户端设置的。客户端可以关闭这些 cookie,我认为这会使会话不起作用。如何检测客户端是否禁用了会话 cookie?

【问题讨论】:

  • ...您是否尝试添加 cookie,然后查看是否可以读取?

标签: php session cookies client


【解决方案1】:

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

所以

if(navigator.cookieEnabled)
    //do something
else
    //do something else

【讨论】:

    【解决方案2】:

    假设您在前一页开始了会话...

    <?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

    【讨论】:

      【解决方案3】:

      如果您知道必须使用会话,通常的方法是在开始尝试设置 cookie 时立即重定向用户,然后抱怨没有在第二页上设置 cookie。

      1. 用户转到http://www.example.com
      2. 系统设置了一个 cookie(也许只是启动会话,也许是一个专用的测试 cookie)。
      3. 系统重定向到http://www.example.com/?cookietest=true
      4. 在该页面上,如果 cookie 没有发回,请向用户投诉。

      另一方面,如果您不必让某人登录,大多数情况下确实不需要会话。如果您这样做,大多数用户会明白他们需要允许 cookie,否则登录将失败。

      【讨论】:

        猜你喜欢
        • 2010-12-29
        • 2011-12-09
        • 2010-10-06
        • 1970-01-01
        • 1970-01-01
        • 2011-04-02
        • 2011-10-13
        • 2021-01-10
        • 1970-01-01
        相关资源
        最近更新 更多