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

PHP 8提示Undefined array key "submit"的修复方法

问题原因

PHP 8 调整了报错等级规则,访问不存在的数组键会直接抛出Warning: Undefined array key警告,而PHP 7.3及更低版本中这类问题只会抛出低级别Notice,多数环境默认会隐藏这类提示,所以代码能正常运行。
你报错的核心原因是:用户首次打开页面(未提交表单的GET请求)时,$_POST数组中不存在submit键,代码直接读取$_POST['submit']就会触发警告。除了你标注的第100行,代码中还有多处同类写法,都有触发同类警告的隐患。

修复方案

把所有直接访问可能不存在的$_POST、$_COOKIE、$_FILES数组键的位置,改成先判断键存在再取值,推荐使用PHP原生的null合并运算符??实现,不会改动原有业务逻辑。

需要修改的具体位置

  1. 原第100行代码
    原代码:
If(($_POST['submit']==true) AND ($password_form==""))

替换为:

if(($_POST['submit'] ?? false) AND ($password_form==""))

注:PHP的流程控制关键字(if/for/else等)官方规范为小写,大写写法虽可兼容运行,但建议统一为小写避免后续兼容问题。

  1. 密码校验逻辑段原代码
If($_POST['verify_password']==true) {
    If(md5($_POST['check_password'])==$password_hash) {

替换为:

if(($_POST['verify_password'] ?? false) == true) {
    if(($_POST['check_password'] ?? '') && md5($_POST['check_password']) == $password_hash) {
  1. Cookie校验段原代码
If($_COOKIE['phUploader']!=$password_hash) {

替换为:

if(($_COOKIE['phUploader'] ?? '') != $password_hash) {
  1. 文件遍历判断段原代码
If($_FILES['file']['name'][$i]) {

替换为:

if(!empty($_FILES['file']['name'][$i])) {
补充说明

如果修改后出现PHP代码不解析的问题,请检查php.ini配置中short_open_tag项是否为On,你的代码中使用了<?短输出标签,需要开启该配置才能正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 21:24:29