PHP:标头不起作用

时间:2015-10-14 12:23:15

标签: php header

我已经阅读了很多有关此事的帖子,但似乎并没有帮助我。

我一直在测试本地服务器,一切都在游泳,但当我上传到网络时,php突然无法正常工作。我连接到数据库和所有。我的主要问题是标题(据我所知)。

我一直在削减一些代码并简化它以缩小问题范围并得出结论:它是标题:

<?php
require 'admin/Connections/Connections.php';
session_destroy();
if(isset($_POST['Login'])){

$UN = $_POST['Username'];
$PW = $_POST['password1'];

$result = mysql_query("select * from admin where Username='$UN'");

$row = mysql_fetch_array($result);
echo $row['Password'];
echo $_POST['password1'];

if($PW == $row['Password']){

header('Location: admin/home.php');

}else{

    $_SESSION["LoginFail"] = "Yes";
}
}
?>

echo将$ post和$ row作为相同的值吐出,所以我知道它应该执行标题,但它只是用添加的回声刷新页面。

我尝试用http://www.google.com/之类的内容替换网址,但这会将我带到带有回声的空白页面。我错过了什么?如果有明显的事情,只要你给我答案,你就有权诋毁我......

5 个答案:

答案 0 :(得分:2)

在使用header()之前回显输出将阻止标头工作。来自header()的PHP文档:

  

请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用header()。

至少,header()来电应先于您代码中的echo来电。如果这不起作用,请检查代码顶部的require() ed文件中是否有任何输出。

答案 1 :(得分:1)

您正在使用echo输出HTML。因此,header不会重定向。

<强>解决方案:

1)在页面开始处添加ob_start()。这会将您的所有输出存储到缓冲区,因此您的页面将不会有任何HTML输出,将发生重定向。

2)评论echo s。

的代码

3)使用javascript重定向:

echo "<script>window.location.href='admin/home.php';</script>";

无论页面上输出什么,这都可以。

答案 2 :(得分:0)

你不能在header之后使用PHP的echo函数,只需将其放在echo之前,然后就可以了。

答案 3 :(得分:0)

如果您向客户端输出任何内容,则无法使用header()功能。有时它被称为“标题已发送”通知。

此外,考虑从mysql_*函数移动,因为它们已被弃用,不再受支持。试试mysqli

答案 4 :(得分:0)

首先,删除你的echo语句或注释它们。  当你把用户带到其他页面时为什么你在这里回应什么呢?向谁展示?

并在PHP文件的顶部写ob_start();,即:

 <?php
ob_start();
--------the rest of your code---