You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP提交本地主机报Undefined array key "Required"错误如何解决

问题原因

这个警告的核心原因是你直接访问了不存在的数组键:
$_POST 是PHP自动生成的全局变量,只会存储前端表单通过POST方式提交的字段,只有你前端表单里有name="Required"的输入控件,提交后$_POST数组里才会有"Required"这个键。你现在要么是前端表单没加这个字段,要么是字段名拼写错误,硬读不存在的键就触发了警告。

另外看你的代码逻辑明显是要做邮箱必填校验,现在的写法逻辑也有问题,把邮箱校验和不存在的Required字段绑在一起了,根本跑不通预期的校验逻辑。

解决方法

分两种场景对应修改即可:

场景1:你本来就不需要Required字段,是写代码时写错了(绝大多数是这种情况)

直接把校验逻辑改成针对邮箱字段判断就行,修改后的完整代码如下:

$RequiredMail = $Required = "";

// 如果你之前已经写过test_input函数可以删掉这一段,没写的话补上避免报错
function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    // 先安全获取邮箱字段,空合并运算符??会在字段不存在时给默认空字符串,不会报错
    $email = $_POST["E-mail"] ?? '';
    // 判断邮箱为空或者格式不对就抛提示
    if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $RequiredMail = "De email dient ingevult te worden";
    } else {
        $Required = test_input($email);
    }
}

场景2:你确实前端有name="Required"的字段用来标记是否必填

只要先判断键存在再访问就行,修改第15行代码:

// 用isset先判断键存在,再执行后续逻辑
if (isset($_POST["Required"]) && filter_var($_POST["Required"])) {

入门学习资源推荐

  • 书籍:优先看《Head First PHP & MySQL》,图文并茂对新手非常友好;基础入门后可以看《PHP和MySQL Web开发》(俗称红皮书),覆盖常用开发场景的规范写法
  • 视频:找国内的PHP系统入门课即可,优先选基础语法、表单处理、全局变量章节讲的细的课程,不要一开始就碰框架类课程
  • 手册:PHP官方中文手册是最实用的查询工具,所有语法、内置函数都有示例,遇到问题先查手册效率最高

内容的提问来源于stack exchange,提问作者Leeroy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 03:15:00