标题位置不起作用 - 但绝对被传递

时间:2012-03-29 20:07:33

标签: php redirect header location

令人讨厌的是,我的登录检查脚本没有重定向到我告诉它的位置。 我知道它正确地击中了if语句,因为我放入了回声来检查它。 在第一种情况下,它是公然地跳过标题,它回应“ - 空白”,因为它应该“它甚至走得这么远?”

所以在这个基础上,我知道它击中了标题 - 它只是忽略了它,我不能为我的生活理解为什么。

我确定它很简单,我错过了一些非常明显的东西,但我无法看到它。 有什么建议吗?

// makes sure they filled it in 
if($_POST['frmLogin-username'] == "" || $_POST['frmLogin-password'] == ""){
    echo " - blanks";

    header('Location: ?page=landing&action=login&message=1');
    echo "Did it even get this far?";
    die;
}
else{
    // checks it against the database
    $query = mysql_query("SELECT * FROM shops WHERE shopUsername = '".$_POST['frmLogin-username']."'");

    //Gives error if user dosen't exist
    $count = mysql_num_rows($query);

    if ($count == "0"){
        echo " - no user";
        header('Location: ?page=landing&action=login&message=2');
        die;
    }
    else{

        while($row = mysql_fetch_array( $query )){

            //gives error if the password is wrong

            if ($_POST['frmLogin-password'] != $row['shopPassword']){
                echo " - wrong pass";
                header('Location: ?page=landing&action=login&message=3');
                die;
            }

            else{

                // if login is ok then we add a cookie

                $hour = time() + 3600;

                setcookie(shopusername, $_POST['frmLogin-username'], $hour);
                setcookie(shopid, $row['shopId'], $hour);

                //then redirect them to the shop panel
                header("Location: ?page=shop");
                die;
            }
        }
    }
}

编辑:问题与我通过调用包含我正在调查的包含在index.php中加载所有页面的方式有关 我已将此流程页面移动到其自己的php文件,现在它可以正常工作

3 个答案:

答案 0 :(得分:2)

首先:在使用echo输出任何内容后,你不能像Sam在评论中所说的那样发送标题。

其次,要发送重定向,Location:之后的网址必须是绝对的,例如http://localhost/page/to/redirect/to.php

修改
Corbin实际上打了我大约10秒的答案; - )

答案 1 :(得分:2)

问题与我在index.php中加载所有页面的方式有关,通过调用我现在正在研究的包括我将这个进程页面移动到它自己的php文件,它现在工作正常

答案 2 :(得分:1)

您可以在PHP中使用window.location,只需echo