为什么我的 php 代码中出现未定义索引错误?

Why am I getting an Undifined Index error in my php code?

我正在尝试修改教程以满足我的需要,但当我收到如下错误时遇到了障碍:

 ( ! ) Notice: Undefined index: username in C:\someDirectory\includes\validation_functions.php on line 21

 Call Stack
 #  Time    Memory  Function    Location
 1  0.0028  259080  {main}( )   ..\newUser.php:0
 2  0.0238  350528  validate_presences( )   ..\newUser.php:16

我的包含如下所示:

 <?php 
 require_once("/includes/session.php");
 require_once("includes/db_connection.php");
 require_once("includes/functions.php");
 require_once("includes/validation_functions.php");
 ?>

并且我已经创建了一个数组来发送第 16 行中的必填字段,如下所示:

   // validations
   $required_fields = array("firstName", "lastName", "email", "username", "passward");
   validate_presences($required_fields);

在 validation_functions.php 文件中我有:

 function has_presence($value) {
return isset($value) && $value !== "";
  }
  function validate_presences($required_fields) {
   global $errors;
   foreach($required_fields as $field) {
          $value = trim($_POST[$field]);
      if (!has_presence($value)) {
    $errors[$field] = fieldname_as_text($field) . " can't be blank";
     }
     }
 }

..我在这个论坛上看到了类似的代码块和解决方案,但我的代码一定与数组有关。你能帮我找出为什么我会收到未定义的索引错误吗?

感谢您的帮助!

附言。第 21 行:$value =trim($_POST[$field]);

你应该把 trim($_POST[$field]) 放在你的 function has_presence($value)

里面
function has_presence($field) {
    return isset($_POST[$field]) && trim($_POST[$field]) !== "";
}
function validate_presences($required_fields) {
    global $errors;
    foreach($required_fields as $field) {
        if (!has_presence($field)) {
            $errors[$field] = fieldname_as_text($field) . " can't be blank";
        }
    }
}

您的错误消息告诉您 $_POST['username'] 未设置,这意味着您的表单中缺少 <input name="username"