首页 > 解决方案 > 自定义功能,仅允许提交中的预期数据

问题描述

我有一个功能,只允许来自表单提交的预期数据。我以前使用它,它工作正常,但现在当我尝试使用它时。它抛出一个错误:Warning: Invalid argument supplied for foreach()我尝试过使用is_array()函数,但这并没有解决错误。知道为什么会这样。

功能

  function allowed_post_params($allowed_params=[]) {
    $allowed_array = [];
    foreach ($allowed_params as $param) {
        if (isset($_POST[$param])) {
            $allowed_array[$param] = $_POST[$param];
        } else {
            $allowed_array[$param] = NULL;
        }
    }
    return $allowed_array;
  }

用于加工

if (is_post_request()) {

  $post_params = allowed_post_params('email', 'username', 'password', 'country');
  $email = $post_params['email']  ?? '';
  $username = $post_params['username'] ?? '';
  $password = $post_params['password'] ?? '';
  $country = $post_params['country'] ?? '';

}

标签: phpformsfunctionloopspost

解决方案


您正在为string函数提供 4 个参数。

$post_params = allowed_post_params('email', 'username', 'password', 'country');

它应该是一个单一的array

$post_params = allowed_post_params(['email', 'username', 'password', 'country']);

推荐阅读