我正在研究如何通过起诉header()函数重定向到另一个页面,但它不起作用,并给我一个错误消息说帽子:无法修改标题信息 - 已经发送的标题......任何人非常感谢,非常感谢。 这是我的PHP代码
if(isset($_POST['email'])){
$email = $_POST['email'];
$pass = $_POST['pass'];
$query = "select email, password from member where email = '$email' and password='$pass'";
if(mysql_num_rows(queryMysql($query)) == 0)
{
echo "Email/Password invalid<br/>";
}
else
{
$query1 ="select uniid from member where email = '$email' and password ='$pass'";
$result1 = queryMysql($query1);
$row1 = mysql_fetch_object($result1);
$uniid = $row1->uniid;
$_SESSION['uniid'] = $uniid;
header("Location:View.php?view=$uniid");
}
}
答案 0 :(得分:3)
标题必须在发送之前发送。将标题重新定位在代码的顶部,它应该可以正常工作。
答案 1 :(得分:1)
考虑使用ob_start()
启动代码。这会关闭输出缓冲,简而言之,您可以在任何地方使用header()
和setcookie()
。
答案 2 :(得分:0)
在调用header()之前,你不能有任何输出(甚至没有空格)。
您可以搜索输出的任何机会,或者您可以在脚本的第一行开始输出缓冲。这将导致输出被缓冲,直到脚本结束或显式调用ob_flush()(或类似函数)。见ob_start()
答案 3 :(得分:0)
标头必须在程序的任何输出之前。因此,如果您在标题修改之前回显任何,您将收到该错误。如果您不想重新排列代码,可以使用输出缓冲来延迟其他输出,直到发送标头。
请参阅:
http://us2.php.net/manual/en/function.header.php
http://us2.php.net/manual/en/function.ob-start.php
http://us2.php.net/manual/en/function.ob-end-flush.php
答案 4 :(得分:0)
导致此问题的最常见原因是,在您发送标头之前,某处某处正在向stdout打印内容。您可以使用ob_start作为Kolink说,或者您可以在php.ini中打开全局输出缓冲区,这将允许PHP首先自动发送标头输出。
答案 5 :(得分:0)
确保PHP文件中没有空格,特别是在打开PHP标记之前。这计为文本输出,在发送标题之前不会发生。