使用PHP(而不是JS)检查cookie以用于启动页面重定向

时间:2010-02-18 16:18:29

标签: php cookies splash-screen

我想重定向到初次访问网站的初始页面,使用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。任何有关解决方案的见解或链接都将非常感激。到目前为止我还没有找到太多。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

请参阅:http://php.net/manual/en/session.idpassing.php

答案 2 :(得分:1)

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