在 php 验证中输入类型 select return 空数组

Input type select return empty array in php validation

我使用以下函数来清理表单数据。

function clean($str) {
    $str = @trim($str);
    if(get_magic_quotes_gpc()) {
        $str = stripslashes($str);
    }
    return htmlspecialchars($str);          
}

它给出以下字段的空数组。

$value = clean($_POST['tags_id'];

删除 clean() 函数后,它会给出所有选定的值(意味着没有空数组)

<select name="tags_id[]" multiple="multiple" data-rel="chosen" style="width: 220px">
<option value="1">value1</option>
<option value="2">value2</option>
<option value="3">value3</option>
</select>

如果您查看表格:

<select name="tags_id[]" multiple=...
                     ^^ here

你会看到tags_id是一个数组,所以$_POST['tags_id']也是一个数组。

您不能在数组上使用字符串函数,您必须遍历数组的元素并在这些元素上调用 clean() 函数。在这里查看当您在数组上使用 trim() 时会发生什么:example.

如果值是一个数组,您还可以检查您的函数并相应地处理它。

你可以这样试试

if (isset($_POST['submit'])) {
  foreach($_POST['tags_id'] as $key => $val) {
    echo "val".clean($val); // Here you will get clean values
  }
}

function clean($str) {
  $str = @trim($str);

  if (get_magic_quotes_gpc()) {
    $str = stripslashes($str);
  }
  return htmlspecialchars($str);
}