PHP cookie正确的重定向方式?

时间:2012-03-26 10:35:52

标签: php html cookies header

所以我在网站上做了一个简单的用户登录,我想设置一个cookie,这样当他们回到网站时,它会把它们带到成员区而不是主页面,有点像“记住” “如果设置了cookie,则将用户重定向到成员区域的功能。

我面临的问题:即使设置了cookie,html代码之前的php代码也没有重定向到member.php页面!

注意:我只是使用部分代码,而不是整个代码/其他文件来简化问题。

这是我的代码:

main.php(这是主页面,也是登录表单的位置,但未显示登录表单)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<?php 
     //Checks if there is a login cookie
     if(isset($_COOKIE["blablabla"]))  //if cookie is set
     {  
        header("Location: www.website.com/member.php"); //redirect to member.php
     }
    else
    {
        //otherwise, redirect to nocookiefound.php
        header("Location: www.website.com/nocookiefound.php"); 
    }
?>
<html>
    <body>
        <?php
            echo "Welcome " . $_COOKIE["blablabla"] . "!<br />";
            //I ran a echo test to see if cookie is still there, and it is.
        ?>
    </body>
</html>

所以我的问题是,我的重定向可以按照它的方式工作吗?

我必须做错事,因为它没有重定向到member.php,即使cookie回显了正确的值。

所以,如果我在登录后最初是在members.php页面中,那么回到main.php,它应该将我重定向到members.php,但它没有,它只停留在main.php 。有谁知道发生了什么?我很感激能得到的所有帮助。感谢

3 个答案:

答案 0 :(得分:1)

PHP代码应该是页面上的第一件事,因为您正在发送重定向“Header”。将其移至Doctype声明之前。

答案 1 :(得分:0)

除了@Dogbert所说的,你的重定向也是无效的。尝试:

header("Location: http://www.website.com/member.php");

答案 2 :(得分:0)

除了其他答案,请输入exit();标题行之后。可以编写一个忽略标题的脚本,从而无意中运行其他代码。

人们经常使用标题来保护管理区域而不会意识到这一点。