这是我的代码,不太确定为什么它不起作用但无法处理。我可以正确处理phpinfo()。
<?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");
}
?>
答案 0 :(得分:0)
来自php文档,
“请记住,在发送任何实际输出之前,必须通过普通的HTML标记,文件中的空行或PHP来调用header()。使用include或require读取代码是一个非常常见的错误。函数或其他文件访问函数,并且在调用header()之前输出空格或空行。使用单个PHP / HTML文件时存在同样的问题。“
你不应该在那里需要回声,如果你真的想要那些消息,你可以将它们设置为$_SESSION('statusMessage');
,然后在重定向页面检查它是否已设置,回显一些东西来显示它,以及将它们设置为undefined。
此外,请确保输入在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;
}
答案 1 :(得分:0)
标头已发送错误 看着 http://php.net/manual/en/function.header.php
请记住,在发送任何实际输出之前必须调用header()