PHP标头重定向无法正常工作

时间:2014-02-28 17:54:43

标签: php mysql redirect header

我正在使用PHP网站。我创建了一个函数来检查用户是否已登录。如果用户已登录,则它将触发数据库查询,并将检查重定向用户的位置。但它不能正常工作。我尝试过更改mysql db中的值,但它无法正常工作并重定向到位置。

<?php
function Is_User_Logged_In()
{
    require $_SERVER['DOCUMENT_ROOT'].'/configuration/configurationfile.php';
    if(isset( $_SESSION['uname'], $_SESSION['email']))
    {
        $uname = @$_SESSION['uname'];
        $email = @$_SESSION['email'];

        if($result = $db->query("SELECT * FROM `users` WHERE BINARY `uname` = '$uname' AND `email` = '$email'"))
        {
            if($result and $result->num_rows)
            {
                $result = mysqli_fetch_array($result);
                $step2 = $result['step2'];
                $vpic = $result['vpics'];
                $act = $result['active'];

                if($step2 == 0)
                {
                    header("Location: /steptwo");
                }
                return true;
                exit();

                if($step2 != 0 && $vpic == 0)
                {
                    header("Location: /idupload");
                }
                return true;

                if($step2 != 0 && $vpic != 0 && $act == 0)
                {
                    header("Location: /pending");
                }
                return true;
            }
        }
        return true;
    }
    return false;
    header ("Location: /");
}
?>
这是我的功能。数据库中step2,vpics和active的默认值为0.首先,我想检查step2是零还是什么。如果它为零,那么它应该重定向到“/ steptwo”页面。然后我想检查vpics然后激活。如果它们中的三个不是零那么主页。谁能帮我?

2 个答案:

答案 0 :(得分:2)

您在标题声明之前返回false。

return false;
header ("Location: /");

应该是

header ("Location: /");
return false;

编辑刚刚意识到你的if语句都很糟糕。改变它们:

if($step2 == 0)
{
     header("Location: /steptwo");
     exit();
}
if($step2 != 0 && $vpic == 0)
{
     header("Location: /idupload");
     exit();
}
if($step2 != 0 && $vpic != 0 && $act == 0)
{
     header("Location: /pending");
     exit();
}

答案 1 :(得分:0)

   if($step2 == 0){
       header("Location: /steptwo");
   }return true; exit();

这应该是

       if($step2 == 0){
        header("Location: /steptwo");
        exit();
      }

如果出口在if之外,那么if下方的行将永远不会被执行。