2014-02-28 59 views
0

我试图将用户重定向,如果他们的输入是不是在数据库PHP header()函数不工作

$checkid = $_POST["id"]; 

$query = "SELECT id, Status FROM profileinfo WHERE id=$checkid"; 

$res = mysqli_query($link, $query); 

$nres = mysqli_num_rows($res); 

if ($nres == 0) { 
    header("Location: login.php")); 
    exit(); 
} 

而且它不会重定向..它只是给出一个空白页。之前或之后没有任何HTML标签,也没有任何回声。

+0

您确定在header()之前没有打印空白或额外的行吗?我曾经去过那里,但错误对于眼睛是不可见的,但对HTML不可见;) –

+0

如果您的查询返回结果,从您在此处发布的内容中,预计会出现空白页面? –

+1

确保在标头调用之前有** NO **输出('<?php'标签之前的'echo','print',空白等)。 –

回答

3

你有一个)header("Location: login.php"));

使用太多:

header("Location: login.php"); 

另外,我相信("之间的空间也可以有效果。我以前见过它。

旁注:使用在一个相对的绝对URL(http://)被推荐,因为Dagon noted并且还提到的手册中关于PHP.net

编辑:我必须承认,我对(和之间的空间做了一个小小的错误3210然而有一些事实到这个,因为我有一个"Location之间的空间应该发生(任何人阅读此)混淆;标题不会重定向。 I.e .:header(" Location: login.php");将无效。这已经过测试。

+1

也绝对的URI建议在相对。 – 2014-02-28 02:02:50

+0

谢谢!神圣的嘘......我不敢相信我没有看到那个大声笑,即时感谢两者,因为你显然在同一时间回答了哈哈。好!那么使用绝对url吧! – LuisEgan

+0

@Dagon真的,我同意绝对的方法。 –

2

还有一个额外的),你检查过语法错误吗?

header("Location: login.php")); 
          ^
+0

看来我们在同一时间回答笑 –

+0

@弗雷德-II-大声笑.. – xdazz

+0

实际上@xdazz回答9秒更快 – 2014-02-28 02:03:50

0

我厌倦了在评论框中键入,所以这里是一个备选答案:)

问题的根源是无益的空白屏幕,而你正在开发你希望看到出现的任何错误。

我建议你设置以下PHP选项:

display_errors On 
error_reporting -1 
html_errors On 

如何添加这些设置吗?取决于你的确切系统......但如果你有一个apache服务器,最简单的方法可能是将一个名为.htaccess的文件添加到你的PHP文件所在的文件夹中。在这种情况下,您的文件将如下所示:

# this is your .htaccess file 
php_flag display_errors On 
php_value error_reporting -1 
php_flag html_errors On 

Apache将读取此文件并将运行时设置传递给PHP。这里更多的信息:

http://uk1.php.net/manual/en/errorfunc.configuration.php#ini.error-reporting

这里:

http://www.php.net/manual/en/configuration.changes.php

一个附加的忠告 - 当您启动您的网站改变display_errors为关闭,以便你不给黑客们伸出援助之手。