【问题标题】:Multiple $_POST[''] != '' (IS NOT LIKE) [closed]多个 $_POST[''] != '' (IS NOT LIKE) [关闭]
【发布时间】:2013-05-01 16:20:32
【问题描述】:

我有这个代码:

if($_POST['badge_id'] != 'USN' OR $_POST['badge_id'] != 'VA2' OR $_POST['badge_id'] != 'PET01' OR $_POST['badge_id'] != 'GLD' OR $_POST['badge_id'] != 'BR149' OR $_POST['badge_id'] != 'DK032' OR $_POST['badge_id'] != 'COM09' OR $_POST['badge_id'] != 'KH0' OR $_POST['badge_id'] != 'COM03' OR $_POST['badge_id'] != 'US8' OR $_POST['badge_id'] != 'UK118' OR $_POST['badge_id'] != 'SE044' OR $_POST['badge_id'] != 'ESV' OR  $_POST['badge_id'] != 'SGR' OR $_POST['badge_id'] != 'SG5' OR $_POST['badge_id'] != 'NO006' OR $_POST['badge_id'] != 'NO050' OR $_POST['badge_id'] != 'NO051' OR $_POST['badge_id'] != 'NO052' OR $_POST['badge_id'] != 'NO053' OR $_POST['badge_id'] != 'NO055' OR $_POST['badge_id'] != 'NO056' OR $_POST['badge_id'] != 'NO060' OR $_POST['badge_id'] != 'NO061' OR $_POST['badge_id'] != 'NO063' OR $_POST['badge_id'] != 'NO064' )
                $error[] = "The ID IS NOT WORKING.";

但它不起作用。它必须过滤输入,但现在他说所有 ID 都不起作用

【问题讨论】:

    标签: php post filter


    【解决方案1】:

    您不应该使用 AND 而不是 OR 吗?您希望所有条件都为真,这意味着您的值必须不同于 value1 AND value2 AND ...

    if($_POST['badge_id'] != 'USN' && $_POST['badge_id'] != 'VA2' && $_POST['badge_id'] != 'PET01' && $_POST['badge_id'] != 'GLD' && $_POST['badge_id'] != 'BR149' && $_POST['badge_id'] != 'DK032' && $_POST['badge_id'] != 'COM09' && $_POST['badge_id'] != 'KH0' && $_POST['badge_id'] != 'COM03' && $_POST['badge_id'] != 'US8' && $_POST['badge_id'] != 'UK118' && $_POST['badge_id'] != 'SE044' && $_POST['badge_id'] != 'ESV' &&  $_POST['badge_id'] != 'SGR' && $_POST['badge_id'] != 'SG5' && $_POST['badge_id'] != 'NO006' && $_POST['badge_id'] != 'NO050' && $_POST['badge_id'] != 'NO051' && $_POST['badge_id'] != 'NO052' && $_POST['badge_id'] != 'NO053' && $_POST['badge_id'] != 'NO055' && $_POST['badge_id'] != 'NO056' && $_POST['badge_id'] != 'NO060' && $_POST['badge_id'] != 'NO061' && $_POST['badge_id'] != 'NO063' && $_POST['badge_id'] != 'NO064' )
                $error[] = "The ID IS NOT WORKING.";
    

    【讨论】:

    • 是的,我在 2 秒前认为 ;# 但 TY 没错:P
    【解决方案2】:

    同时让您的代码更具可读性、性能和工作效率:

    $validValues = [
        'option1',
        'option2',
        'option3',
        'option4',
        'option5',
        'option6'
    ];
    if(!in_array($_POST['badge_id'], $validValues))
        $error[] = 'The ID is not working';
    

    【讨论】:

      【解决方案3】:

      if 语句的方式意味着它将始终返回 true(这是正在发生的事情的示例):

      LET a = 1
      
        (a != 1 OR a != 2) 
      = (FALSE OR TRUE) 
      = TRUE
      

      由于您有很多要检查的badge_id,我会将它们放入一个数组并使用PHP 的in_array 函数。

      例子:

      <?php
      $badges = array('USN', 'VA2', 'PET01', 'GLD', 'BR149', 'DK032'); // etc.
      if(!in_array($_POST['badge_id'], $badges))
      {
          $error[] = 'The ID is not working.';
      }
      

      【讨论】:

        猜你喜欢
        • 2011-02-12
        • 2022-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-09-24
        • 1970-01-01
        • 1970-01-01
        • 2023-02-16
        相关资源
        最近更新 更多