1

$_POST['a'] が空ではなく、かつ '1' または '2' であるかどうかを確認する必要があるため、ユーザーは a= を削除したり、値を 1 または 2 から投稿パスから別のものに変更したりできません。

<?php
if(empty($_POST['a']) || !in_array($_POST['a'], array('1', '2'))) {
 echo 'error1';
} else if ($_POST['a'] == '1') {
 do something;
} else if ($_POST['a'] == '2') {
 do something;
} else {
 echo 'error2';
}
?>

誰かがこれを正しい方法で行う方法を教えてもらえますか?

大変感謝します

4

3 に答える 3

4

代わりにスイッチを使用できます。

switch ($_POST['a']):
case '':
    // empty
    echo 'error1';
    break;
case '1':
    // do something for 1
    break;
case '2':
    // do something for 2
    break;
default:
    // not empty but not 1 or 2
    echo 'error2';
endswitch;
于 2013-06-29T19:14:29.323 に答える
1
if (!empty($_POST['a']) && $_POST['a'] == '1') { //Not empty AND is 1
 do something;
} else if (!empty($_POST['a']) && $_POST['a'] == '2') { //Not Empty AND is 2
 do something;
} else {
 echo 'error';
}

最初の 2 つはすべての「適切な」値をキャッチし、それ以外はすべてエラーになります。この場合、トップは必要ありません。

于 2013-06-29T19:09:51.657 に答える
0

更新: 構文エラーがあります。)最初の の最後にaがありませんif

これを行う 2 つの簡単な方法:

// first condition should be by itself as it's a terminal error
if(empty($_POST['a']) or !in_array($_POST['a'], array('1', '2'))) {
    echo 'error1';
    die; // or redirect here or just enfore a default on $_POST['a'] = 1; // let's say
}

// Second can be like this or embraced in the else of the first one (se ex.2)
if ($_POST['a'] == '1') {
    // do something;
} else if ($_POST['a'] == '2') {
    // do something;
}

また

// first condition should be by itself as it's a terminal error
if(empty($_POST['a']) or !in_array($_POST['a'], array('1', '2'))) {
    echo 'error1';
    // or redirect here or just enfore a default on $_POST['a'] = 1; // let's say
}else{ // Second is in the else here :)
    if ($_POST['a'] == '1') {
    // do something;
    } else if ($_POST['a'] == '2') {
        // do something;
    }
}

空と不正な値の両方を処理する最初の値で常に終了するため、最後elseに到達することはありません。if

于 2013-06-29T19:16:49.200 に答える