1

当我在没有指定任何 POST 变量的情况下发布到这个脚本时,脚本应该会重定向,但仍然会说。当我把 die(); 在第一个 if 函数之后,页面实际上被重定向了。

$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$email = $_POST['email'];
$phone = $_POST['phone'];
$gender = $_POST['gender'];
$dob = $_POST['dob'];
$school = $_POST['school'];
$grade = $_POST['grade'];
$password = $_POST['password'];
$password2 = $_POST['password2'];


$test=FALSE;
 $required = array     ('firstname','lastname','email','phone','gender','dob','school','grade','password','password2');

foreach ($required as $value)
{
if(!isset($_POST[$value]) || empty($_POST[$value]))
{
        $test = TRUE;

}   
}

if($test)
{
header("location:../register.php?error=1");
}


$id = getRand(9);
$conn = getConnection();

$check =      saveUser($firstname,$lastname,$email,$phone,$gender,$dob,$school,$grade,$password,$id,$conn );


if($check)
{
header("location:../quiz.php");
}
else
{
header("location:../register.php");
}
4

2 回答 2

1

您需要在命令之后设置 a die()header(...)否则之后的所有内容都将被执行。像这样做:

if($test) {
    header("location:../register.php?error=1");
    die(); // Abort everything else
}

我不明白您的其他问题-您在if ($test)? 你能给我样本数据吗?

于 2013-03-16T20:54:23.253 回答
1

您的header命令不会重定向,而只是将位置标头发送到浏览器,脚本会继续运行。(浏览器随后在脚本运行后遵循此位置标头,从而创建重定向。)

但是,如果您在第一个位置标头之后(在同一脚本期间)发送另一个位置标头,则此标头将覆盖第一个标头,然后是唯一发送到浏览器的标头。

您需要exitdie在 header 命令之后。

于 2013-03-16T20:55:56.857 回答