为什么隐藏的输入字段值不能为空

Why hidden input field values can't be empty

我正在使用 PHP 表单发送用户注册数据,然后使用 PHP 表单处理。我需要注册一些用户类型,例如“普通用户”、“管理员用户”、“编辑启用用户”等。每种用户的详细注册请求都不同。但我希望使用相同的 formDataManagement.php 文件。当我单击“提交”按钮时,显示一条错误消息。

Undefined array Key.

表单数据部分

<input type="hidden" id="companyname" name="companyname" value="">
<input type="hidden" id="regno" name="regno" value="">
<input type="hidden" id="farmaddress" name="farmaddress" value="">
<input type="hidden" id="role" name="role" value="admin">
<input type="hidden" id="designation" name="designation" value="manager"> 

formDataManagement.php

//if user signup button
if(isset($_POST['signup'])){
    $name = mysqli_real_escape_string($con, $_POST['name']);
    $email = mysqli_real_escape_string($con, $_POST['email']);
    $password = mysqli_real_escape_string($con, $_POST['password']);
    $conpassword = mysqli_real_escape_string($con, $_POST['conpassword']);
    $compName = mysqli_real_escape_string($con, $_POST['companyname']);
    $role = mysqli_real_escape_string($con, $_POST['role']);
    $regno = mysqli_real_escape_string($con, $_POST['regno']);
    $designation = mysqli_real_escape_string($con, $_POST['designation']);
    $farm_address = mysqli_real_escape_string($con, $_POST['farmaddress']);
    $resi_address = mysqli_real_escape_string($con, $_POST['resaddress']);
}
   

但是处理完后,出现如下错误

Warning: Undefined array key "companyname" in C:\xampp\htdocs\test\admin\register\formDataManagement.php on line 15

Warning: Undefined array key "regno" in C:\xampp\htdocs\test\admin\register\formDataManagement.php on line 17

Warning: Undefined array key "farmaddress" in C:\xampp\htdocs\test\admin\register\formDataManagement.php on line 22

我不能将空值作为隐藏输入值发送吗? 请建议解决此问题。

我无法仅根据您当前给出的代码确定确切的问题,但问题可能是由以下任何一种引起的:

  • 您没有使用 POST method 发送表单中的数据。
  • 您将三个输入字段放在表单之外。
  • 您的提交按钮无法正常工作,尤其是当您在提交表单之前有一个 pre-submit JS 函数时。
  • 还有更多(请包含更多代码)

您肯定可以发送空值作为隐藏输入值。虽然内容会为空,但绝不会发出警告

来自 MDN(input="hidden" 的描述):

A control that is not displayed but whose value is submitted to the server.

  1. <input hidden id="companyname" name="companyname" value=""/> 一样使用 hidden 而没有 type="hidden"。您可以设置类型 type="text".

  2. 也尝试关闭元素:<input hidden type="text" id="companyname" name="companyname" value=""/></input>.

所以这是完美的输入元素:<input hidden type="text" id="companyname" name="companyname" value=""/>