0

PHP でフォーム検証用のコードを書いていますが、チェックボックスの検証に問題があります。フォームを通過するときに、チェックボックスをオンにしないと、正しいエラー メッセージが表示されます。

ただし、チェックボックスをオンにしても、同じエラー メッセージが表示されます。

これまでのコードは次のとおりです。

if (isset($_POST['firstname'], $_POST['lastname'], $_POST['address'], $_POST['email'], $_POST['password'])) {
    $errors = array(); 

    $firstname = $_POST['firstname'];
    $lastname = $_POST['lastname'];
    $address = $_POST['address'];
    $email = $_POST['email']; 
    $password = $_POST['password'];

    if (empty($firstname)) {
        $errors[] = 'First name can\'t be empty'; 
    }

    if (empty($lastname)) {
        $errors[] = 'Last name can\'t be empty'; 
    }

    if (empty($address)) {
        $errors[] = 'Address can\'t be empty';
    }

    if (filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) {
        $errors[] = 'Please enter a valid email'; 
    }

    if (empty($password)) {
        $errors[] = 'Password can\'t be empty'; 
    }

}

if (!isset($checkbox)) {
        $errors[] = 'Please agree to the privacy policy';
} 

$sex = $_POST['sex'];
$age = $_POST['age'];
$checkbox = $_POST['checkbox'];

$_SESSION['validerrors'] = $errors;
$_SESSION['firstname'] = $firstname;
$_SESSION['lastname'] = $lastname;
$_SESSION['address'] = $address;
$_SESSION['email'] = $email;
$_SESSION['sex'] = $sex;
$_SESSION['age'] = $age; 
$_SESSION['password'] = $password;
$_SESSION['checkbox'] = $checkbox;

if (!empty($errors)) {
    header('Location: index.php'); 
} else { 
    header('Location: writevalues.php'); 
}

上記のコードの他のすべては正常に機能していますが、チェックボックスの検証状況に対する役立つ回答を見つけることができませんでした。前もって感謝します!

4

1 に答える 1

5

このコードを呼び出しています:

if (!isset($checkbox)) {
        $errors[] = 'Please agree to the privacy policy';
} 

この行の前:

$checkbox = $_POST['checkbox'];

その時点で設定されていないので、もちろんisset($checkbox)戻ってきます!false

if ステートメントを次のように変更できます。

if(!isset($_POST['checkbox'])){ ...

または$checkbox = $_POST['checkbox'];、if ステートメントの上に行を移動します。

于 2013-05-14T12:39:33.563 に答える