我已经阅读了很多有关此事的帖子,但似乎并没有帮助我。
我一直在测试本地服务器,一切都在游泳,但当我上传到网络时,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/之类的内容替换网址,但这会将我带到带有回声的空白页面。我错过了什么?如果有明显的事情,只要你给我答案,你就有权诋毁我......
答案 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---