【问题标题】:Check for cookies with PHP (not JS) to use for splash page redirect使用 PHP(不是 JS)检查用于启动页面重定向的 cookie
【发布时间】:2010-02-18 16:18:28
【问题描述】:

我想使用 cookie 将首次访问该网站的访问者重定向到启动页面,以记住他们来过。这很容易,但是,对于禁用 cookie 的人,我不想将他们重定向到启动页面。

我遇到的问题是,当我设置 cookie 时,PHP 在我重新加载页面之前不会看到它。这意味着第一次访问者不会被重定向,除非他们访问主页两次或重新加载页面。

这是我的作品,但需要重新加载:

setcookie("test",'1',time() + 3600,'/');
if(isset($_COOKIE['test'])){
    if(isset($_COOKIE['bfc_splash'])){}else{
        header("Location: splash/");
    }
}

我试过了,但似乎 SESSION 信息存储在 cookie 中,因为它只是无限重定向:

if(isset($_COOKIE['test'])){
    if(isset($_COOKIE['bfc_splash'])){}else{
        header("Location: splash/");
    }
}elseif(!isset($_COOKIE['test']) && !isset($_SESSION['cookies'])){
    setcookie("test",'1',time() + 3600,'/');
    $_SESSION['cookies'] = '1';
    header("Location: index.php");
}

我不希望使用 javascript 来检查 cookie,因为禁用 cookie 的人可能也会禁用 javascript。任何见解或解决方案的链接将不胜感激。到目前为止我还没有找到太多。

【问题讨论】:

    标签: php cookies splash-screen


    【解决方案1】:

    您可以使用会话并通过 GET 而不是 cookie 传播会话 ID。

    见:http://php.net/manual/en/session.idpassing.php

    【讨论】:

      【解决方案2】:

      如果用户禁用了 cookie,您将无法判断他是否是第一次访问该网站,因为每次访问看起来都像是第一次访问。

      【讨论】:

      • 对,这就是为什么我从不想将禁用 cookie 的人重定向到启动页面。
      • 您无法判断用户是否禁用了 cookie 或是否是第一次访问该网站。
      【解决方案3】:

      查看示例站点 barackobama.com,当您从初始重定向跳转到主页时,它们会传递一个 GET 变量。这允许某人在未启用 cookie 的情况下查看主页。他们似乎不太关心禁用 cookie 的任何人在单击顶部的主页链接(缺少 GET 变量)后会再次被重定向。由于他们似乎并不关心禁用 cookie 的人,所以我会效仿,因为我找不到更好的解决方案。

      【讨论】:

        猜你喜欢
        • 2012-02-18
        • 2016-03-08
        • 1970-01-01
        • 1970-01-01
        • 2011-02-22
        • 2019-06-19
        • 2011-08-26
        • 2014-11-13
        • 1970-01-01
        相关资源
        最近更新 更多