在PHP8下堆代码时报错,切换到7.4就没问题,于是了解了一下。

报错:

Warning: Undefined array key "download" in /home/reishi/scriptsz.com/post.php on line 2

 

我们可以根据这个错误提示,了解到是$_POST或者$_GET获取的表单返回数组的key值未定义,因为我们是直接获取这个值,但是如果这个key未定义的话,就会报错。原因是因为 PHP8.0 之后 对于语法要求更严格了。

解决方法1

方法思路:查看本页面是否存在POST或者GET

请求方法:$_SERVER[‘REQUEST_METHOD’]

举个栗子

if ($_SERVER["REQUEST_METHOD"] == "POST")
  { $a = $_POST['xxx'];

解决办法2

方法思路:判断$_POST['xxx']或者$_GET['xxx']是否已设置并且非 NULL

方法:isset()函数

举个例子

isset($_POST['download']);

如果我们使用这一个方式的话,如果没有设置或为NULL则为false,反之为true

这样的话,这个变量就会有一个默认值,可以用这一个方式来避免报错提示。

我们经过判断后,再进行一次赋值,即可使用。可以用三目运算进行判断

isset($_POST['download'])?$download = $_POST['download']:$download = NULL

解决方法3

方法思路:直接屏蔽报错信息

方法:error_reporting(0);或者修改php.ini

这种方法不推荐,属于掩耳盗铃,明知有错误不修复,等到代码堆的多的时候头也会疼。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。