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';
}

前两个将捕获所有“好”值,其他一切都会出错。如果在这种情况下,不需要顶部。

于 2013-06-29T19:09:51.657 回答
0

更新:您有语法错误。)在第一个末尾缺少 a if

两种简单的方法:

// 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 回答