php post undefined index,php get或post提交表单报错Undefined index

本文探讨了如何处理PHP中POST数据时遇到的Undefinedindex和Undefinedvariable警告,提供了多种解决方案,包括屏蔽警告、修改php.ini、变量预检查、使用函数封装等,帮助开发者避免此类问题并保持代码健壮。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们经常接收表单POST过来的数据时报Undefined index错误,如下:

$act=$_POST['action'];

用以上代码总是提示 Notice: Undefined index: act in D:\test\post.php on line 20

另外,有时还会出现 Notice: Undefined variable: Submit ...... 等一些这样的提示

出现上面这些是 PHP 的提示而非报错,PHP 本身不需要事先声明变量即可直接使用,但是对未声明变量会有提示。一般作为正式的网站会把提示关掉的,甚至连错误信息也被关掉。

首先,这个不是错误,是warning。所以如果服务器不能改,每个变量使用前应当先定义。网上流行的解决方法有以下几种:

第一种方法:

如果不影响程序的正常执行,可以采用屏蔽的方法

可以在代码的第一行 加上

error_reporting(E_ALL ^ E_NOTICE);

关闭掉 NOTICE错误的警告

第二种方法:

打开php.ini文件,error_reporting设置:

找到error_reporting=E_ALL

修改为error_reporting=E_ALL & ~E_NOTICE

第三种方法:

做判断:isset($_GET["page"]) if-else判断。或者加上'@'表示这行如果有错误或是警告不要输出。如:@$page=$_GET["page"]

第四种方法:

file1.php文件把$xx变量付一个值,用post 传递给file2.php,如果file2.php没有$xx的定义,而直接使用$yy=$xx; 系统就会报错:"undifined variaable $xx", 如果file2.php的文件开始用$xx="";定义,那么file1.php的$xx值就传不过来了。file2.php里可以这样:if(!isset($xx)) $xx="";

第五种方法:

如果你觉得上面的方法不怎么好用,也可以用下面的方法:

function _get($str){

$val = !empty($_GET['str']) ? $_GET['str'] : null;

return $val;

}

定义这样的一个函数,然后在用的时候,直接用 _get('str') 代替 $_GET['str'] 就行啦~这样会方便些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值