Php 标题位置不工作-但肯定被忽略

Php 标题位置不工作-但肯定被忽略,php,redirect,header,location,Php,Redirect,Header,Location,令人烦恼的是,我的登录检查脚本没有重定向到我告诉它的地方。 我知道它正确地命中了if语句,因为我输入了echos来检查它是否正确。 它公然跳到头球,因为在第一次情况下,它呼应了“-空白”,然后它也应该“它走了这么远吗?” 因此,在这个基础上,我知道它击中了头球-它只是简单地忽略它,我无法为我的生命理解为什么 我确信这很简单,我遗漏了一些显而易见的可笑的东西,但我就是看不到。 有什么建议吗 // makes sure they filled it in if($_POST['frmLogin-u

令人烦恼的是,我的登录检查脚本没有重定向到我告诉它的地方。 我知道它正确地命中了if语句,因为我输入了echos来检查它是否正确。 它公然跳到头球,因为在第一次情况下,它呼应了“-空白”,然后它也应该“它走了这么远吗?”

因此,在这个基础上,我知道它击中了头球-它只是简单地忽略它,我无法为我的生命理解为什么

我确信这很简单,我遗漏了一些显而易见的可笑的东西,但我就是看不到。 有什么建议吗

// 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;
            }
        }
    }
}
编辑:这个问题与我通过调用includes在index.php中加载所有页面的方式有关,我现在正在调查这个问题
我已经将这个流程页面移动到了它自己的php文件中,现在它运行良好了。首先,你不能像Sam在评论中所说的那样,在使用echo输出任何内容后发送标题

其次,要发送重定向,
位置:
后面的URL必须是绝对的,就像
http://localhost/page/to/redirect/to.php

编辑

科尔宾实际上在大约10秒钟的时间里击败了我的答案;-)

您可以使用
窗口位置
,只是
echo
它在PHP中。

问题在于我通过调用includes在index.PHP中加载所有页面的方式,我现在正在调查我已将此流程页面移动到它自己的PHP文件中,现在工作正常

一旦将文本内容发送到浏览器,就不能发送标题-任何echo或空格都会阻止另外,根据HTTP规范,您必须提供指向位置的完整URI,而不是相对路径。(虽然这可能不是任何现代浏览器都能容忍的问题。)回音通常不在那里——它们是为了测试而添加的。所以,嗯,你在哪里重定向?确切的
wget-S是什么http://example.org/yourscript.php
输出?向我们证明标题在那里,以及哪些标题。否则:可能重复我使用了绝对URL,并且通常没有回音(添加回音是为了检查我的代码是否正确地命中了IF语句,只是没有在这里预先发布删除),即使使用绝对URL,它仍然不起作用