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

コマンドはリダイレクトheaderせず、ロケーションヘッダーをブラウザに送信するだけで、スクリプトは引き続き実行されます。(ブラウザーは、スクリプトが実行された後、後でこのロケーションヘッダーをたどり、リダイレクトを作成します。)

ただし、(同じスクリプト内で)最初のヘッダーの後に別のロケーションヘッダーを送信すると、このヘッダーが最初のヘッダーを上書きし、ブラウザーに送信されるのはこのヘッダーだけになります。

ヘッダーコマンドの後にexitする必要があります。die

于 2013-03-16T20:55:56.857 に答える
1

die()コマンドの後にa を設定する必要がありますheader(...)。そうしないと、その後のすべてが実行されます。次のようにします。

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

他の質問がわかりません - if ($test)?の前にリダイレクトされます。そのためのサンプルデータをいただけますか?

于 2013-03-16T20:54:23.253 に答える