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

时间:2017-07-27
平时用$_post['']或$_get['']获取表单中参数时会出现Notice: Undefined index:以及我们经常接收表单POST过来的数据时报Undefined index错误,本文章向大家介绍如何解决这种错误,需要的朋友可以参考一下。

我们经常接收表单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'] 就行啦~这样会方便些。