PHP标头未重定向
我的标题不会重定向。执行代码后,它只是空白,不执行重定向。文件中没有空格。除了重定向之外,代码完全正常工作 此代码由表单submit调用PHP标头未重定向,php,header,Php,Header,我的标题不会重定向。执行代码后,它只是空白,不执行重定向。文件中没有空格。除了重定向之外,代码完全正常工作 此代码由表单submit调用 if(!empty($_POST['addSubscriber'])){ $name = $_POST['name']; $email = $_POST['email']; if(!empty($name) && !empty($email) && eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)
if(!empty($_POST['addSubscriber'])){
$name = $_POST['name'];
$email = $_POST['email'];
if(!empty($name) && !empty($email) && eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $email) != FALSE){
$conn = connect();
$sql = "SELECT id FROM subscribers WHERE email=?";
if($stmt = $conn->prepare($sql)){
$stmt->bind_param("s", $email);
$stmt->execute();
if($stmt->fetch()){
header("Location: http://bcp350.org.uk/index.php?message=1");
} else {
$password = md5(uniqid());
$sql2 = "INSERT INTO subscribers(name, email, password) VALUES(?, ?, '$password')";
if($stmt2 = $conn->prepare($sql2)){
$stmt2->bind_param("ss", $name, $email);
$stmt2->execute();
if($stmt2->affected_rows == 1)
header("Location: http://bcp350.org.uk/index.php?message=1");
}
}
}
} else {
header("Location: urlnotallowedbecauseofstackoverflowlimit");
}
}
根据以下PHP文档: 记住,在发送任何实际输出之前,必须调用header(),可以是通过普通HTML标记、文件中的空行,也可以是通过PHP。使用include()或require()函数或其他文件访问函数读取代码,并在调用header()之前输出空格或空行,这是一个非常常见的错误。使用单个PHP/HTML文件时也存在同样的问题
您确定在调用
标题之前没有向页面发送输出吗?如果代码中发生以下任何一种情况,所有对标题()
的调用都将被忽略:
$\u POST['addSubscriber']为空
$conn->prepare($sql)返回falsy
$conn->prepare($sql2)返回falsy
$stmt2->受影响的_行与1不比较
您需要添加一些调试,并找出发生了哪些调试。在php页面的最开始部分使用此代码
<?php
之后调用header()
是否失败?另外,始终调用exit()代码>紧接着执行标题(“位置:”)
停止进一步执行当前脚本`在*.php文件中发布的代码之前有什么内容吗?在每次头重定向之后,输入exit()
调用,看看它是否仍然失败。如果没有,则可能是页面下方的错误仍在执行且失败。根据代码逻辑,重定向在任何情况下都不会执行-有2个If
s,当不调用重定向时。此代码段包含的完整php文件可以在这里查看pastebin.com/ha4lqu24此代码段包含的完整php文件可以在这里@Nick查看,但是在constants.php
中如何?您还必须验证该文件中没有空格。