2015-10-14 159 views
-1

我读了很多关于此的帖子,但似乎没有帮助我。PHP:标题不起作用

我一直在工作一个测试本地服务器,一切都一直在顺风顺水,但是当我将它上传到网络时,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"; 
} 
} 
?> 

回声吐出既$岗位和$行一样值,所以我知道它应该执行标题,但它只是用添加的回声刷新页面。

我试着用类似http://www.google.com/的东西来替换网址,但是这带我回到了带回声的空白页面。我错过了什么?如果它是明显的东西,你有权限垃圾我,只要你给我一个答案...

+6

头(),如果你打印输出任何东西都不行。你在header()之前打印出两个变量。 – DNReNTi

+0

如果你有echo'd东西然后头**不会做任何事情**因为你已经发送到浏览器的头,你不能修改这一点后的头。 –

+1

任何调试的第一步都是打开错误报告。一个附带说明,你似乎使用折旧的SQL函数,直接在SQL查询中使用用户输入,并在数据库中保存明文密码,这些都是他们自己的严重问题 – Steve

回答

0

你不能使用PHP的header函数后echo,只是把它放在你的echo之前,那么它应该工作。

0

如果您向客户端进行任何输出,则不能使用header()函数。有时它被称为“头文件已发送”通知。

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

2

在使用header()之前回应输出将停止标题的工作。从PHP文档header()

记住header()函数必须在发送任何实际输出之前,无论是普通的HTML标签,在一个文件中的空行,或从PHP调用。

至少,header()调用应该在您的代码中调用echo之前。如果这不起作用,请检查代码顶部的require() ed文件中是否有输出。

1

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

解决方案:

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

2)评论代码echo s。

3)使用JavaScript重定向:

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

这将工作无论是什么在页面上输出。

0

首先,删除您的回声或评论他们。 当你将用户带到其他页面时,为什么你会在这里回应什么?向谁展示?

在你的PHP文件即顶部

,写ob_start();

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