2012-03-26 37 views
0

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

问题我正面临着:即使设置了cookie,html代码也没有重定向到member.php页面之前的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上。 PHP。任何人都知道发生了什么事?我会很感激所有我能得到的帮助。谢谢

回答

0

以及@Dogbert所说的,你的重定向是无效的。尝试:

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

是的,也许加上重定向的“CODE”应该会更好。 – DonCallisto 2012-03-26 10:40:10

1

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

+1

更不用说缺少“退出”其余的php代码仍然会运行 – AD7six 2012-03-26 10:38:33

0

除了其他答案,放一个exit();在标题行之后。可以编写一个忽略标题的脚本,因此无意中运行其他代码。

人们经常使用头部来保护管理区域,但没有意识到这一点。