5

我想使用 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。任何见解或解决方案的链接将不胜感激。到目前为止我还没有发现太多。

4

3 回答 3

2

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

于 2010-02-18T16:32:37.593 回答
2

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

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

于 2010-02-18T16:52:19.660 回答
1

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

于 2010-02-18T16:42:58.317 回答