PHP脚本不等待代码执行

时间:2013-03-16 20:49:30

标签: php redirect if-statement

当我在没有指定任何POST变量的情况下发布到此脚本时,该脚本仍然会重定向,但仍然说。当我把死()时,我有趣的事情;在第一个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");
}

2 个答案:

答案 0 :(得分:1)

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

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

我不明白你的另一个问题 - 你在if ($test)之前被重定向了吗?你能给我一些样本数据吗?

答案 1 :(得分:1)

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

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

您需要在标头命令之后exitdie