PHP无法处理请求

问题描述:

这是我的代码,不太清楚为什么它不起作用,但无法处理。我可以正确处理phpinfo()。PHP无法处理请求

<?php 

include("tools.php"); 
$username = $_POST["uname"]; 
$email = $_POST["email"]; 
$pasword = $_POST["pword"]; 

if(isset($username) and isset($email) and isset($password)){ 
    if(add_user_database($username, $email, $password) == TRUE){ 
     echo "You've been added!!!"; 
     header("location:login.php"); 
    }else{ 
     echo "<script>alert('Error has occurd please contact " . 
          "support or try again later');</script>"; 
     header("location:register.php"); 
    } 
}else{ 
    echo "<script>alert('Please fill in all forms');</script>"; 
    header("location:register.php"); 
} 
?> 
+2

尝试每个'头之前除去回波语句()'呼叫的任何实际输出之前被调用。当您想要重定向页面时显示任何消息是一种不好的做法。另外,根据您的PHP错误设置,它可能会引发错误。 – Ibrahim

+1

您是否收到任何错误?如果没有,在PHP脚本的最上面添加这些行,ini_set('display_errors',1); error_reporting(E_ALL);'看看它是否会产生任何错误。 –

+1

这不是一个错误的做法。在使用header命令重定向呼叫之前,不能发送客户端数据。 –

从PHP文档,

“记住header()函数被发送的任何实际输出之前,必须被调用,或者通过正常的HTML标记,空行在文件中,或从PHP,它是使用include或require函数或其他文件访问函数读取代码时出现的一个非常常见的错误,并且在调用header()之前输出了空格或空行,使用单个PHP/HTML文件时也存在同样的问题。 “

如果你真的想要那些消息,你可以将它们设置为$_SESSION('statusMessage');,然后在重定向页面检查它是否设置,回显出某些内容并将它们设置为未定义。

另请注意,请确保输入在add_user_database()已被消毒!

编辑:

有用的提示

在检查登录脚本:

if(add_user_database()){ 
    $_SESSION['addUserStatus'] = "Success, you have been added, woo!"; 
    header("Location: someOtherPage.php"); 
}else{ 
    $_SESSION['addUserStatus'] = "Error! Please contact support for assistance!"); 
    header("Location: someOtherPage.php"); 
} 

在其他页面:

if(isset($_SESSION['addUserStatus']){ 
    echo "<script>showLoginMessage('" . $_SESSION['addUserStatus'] . "')</script>"; 
    $_SESSION['addUserStatus'] = undefined; 
} 
+0

这将是我只是想让它首先工作。 – Nathan

+0

Oki doki,我会用一些代码更新答案(: –

头部已经发送错误 外观在 http://php.net/manual/en/function.header.php

记住,标题()必须被发送