php提示undefined index的几种解决方法_php技巧

平时用$_post[''],$_get['']获取表单中参数时会出现Notice: 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 本身不需要事先声明变量即可直接使用,但是对未声明变量会有提示。一般作为正式的网站会把提示关掉的,甚至连错误信息也被关掉。

解决方法:

方法1:服务器配置修改
修改 php.ini 中的 error配置下错误显示方式:将error_reporting = E_ALL 修改为

error_reporting = E_ALL & ~E_NOTICE

修改后重启下APCHE服务器,方可生效。

方法2:对变量进行初始化。

方法3:做判断isset($_post['']),empty($_post['']) if --else

方法4:在出现notice代码之前加上@,@表示这行有错误或是警告不要输出,@$username=$_post['username'];
在变量前面 加上一个 @ ,如 if (@$_GET['action']=='save') { ...

方法5:最后一种很实用,是别人写的一个函数,通过这个函数进行传递值。

定义一个函数:

复制代码 代码如下:

function _get($str){
$val = !empty($_GET[$str]) ? $_GET[$str] : null;
return $val;
}

然后在用的时候,直接用 _get('str') 代替 $_GET['str'] 就行啦~

[PHP-Core-Error]

error_reporting = E_ALL & ~E_NOTICE
; 错误报告级别是位字段的叠加,推荐使用 E_ALL | E_STRICT
; 1 E_ERROR 致命的运行时错误
; 2 E_WARNING 运行时警告(非致命性错误)
; 4 E_PARSE 编译时解析错误
; 8 E_NOTICE 运行时提醒(经常是bug,也可能是有意的)
; 16 E_CORE_ERROR PHP启动时初始化过程中的致命错误
; 32 E_CORE_WARNING PHP启动时初始化过程中的警告(非致命性错)
; 64 E_COMPILE_ERROR 编译时致命性错
; 128 E_COMPILE_WARNING 编译时警告(非致命性错)
; 256 E_USER_ERROR 用户自定义的致命错误
; 512 E_USER_WARNING 用户自定义的警告(非致命性错误)
; 1024 E_USER_NOTICE 用户自定义的提醒(经常是bug,也可能是有意的)
; 2048 E_STRICT 编码标准化警告(建议如何修改以向前兼容)
; 4096 E_RECOVERABLE_ERROR 接近致命的运行时错误,若未被捕获则视同E_ERROR
; 6143 E_ALL 除E_STRICT外的所有错误(PHP6中为8191,即包含所有)

时间: 2024-09-11 01:42:38

php提示undefined index的几种解决方法_php技巧的相关文章

PHP Undefined index报错的修复方法_php技巧

虽然可以通过设置错误显示方式来隐藏这个提示,但是这样也有隐患,就是在服务器的日志中会记录这些提示,导致日志文件异常庞大. 首先,这个不是错误,是warning.所以如果服务器不能改,每个变量使用前应当先定义.网上流行的解决方法有以下几种: 方法1:服务器配置修改.修改php.ini配置文件,error_reporting = E_ALL & ~E_NOTICE. 方法2:对变量进行初始化,规范书写(比较烦琐,因为有大量的变量).但还没有找到好定义方法,望大家指教. 方法3:每个文件头部加上:er

php运行报错Call to undefined function curl_init()的最新解决方法_php技巧

之前网上的解决方法如下: 1.在php.ini中开启curl扩展 2.将php目录下的libeay32.dll.ssleay32.dll.php5ts.dll拷贝到c:\windows\system32里面 (还有一种方法是说在httpd.conf中加上动态链接库,如:LoadFile d:/php/libeay32.dll 和 LoadFile d:/php/ssleay32.dll,但我试过了,同样不起作用) 3.重启apache,OK! 不知道这些人是不是真的试过而且成功了,就把这些所谓的

phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法_php技巧

解决办法有两种:(建议用第二种) 1.配置phpmyadmin下的config.inc.php  将cookie改为http 复制代码 代码如下: vi /usr/share/phpmyadmin/config.inc.php  [...]  /* Authentication type */  $cfg['Servers'][$i]['auth_type'] = 'cookie'; [...] 再打开浏览器输入管理地址,这时会弹出登录窗口,输入用户名及密码及可. 不过很不习惯,而且在进入管理界

PHP file_get_contents 函数超时的几种解决方法_php技巧

这里就简单介绍两种: 一.增加超时的时间限制 这里需要注意:set_time_limit只是设置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时间. 我一开始以为set_time_limit也能影响到file_get_contents,后来经测试,是无效的.真正的修改file_get_contents延时可以用resource $context的timeout参数: 复制代码 代码如下: $opts = array( 'http'=>array( 'met

PHP与MySQL开发中页面出现乱码的一种解决方法_php技巧

一般来说,乱码的出现有2种原因,首先是由于编码(charset)设置错误,导致浏览器以错误的编码来解析,从而出现了满屏乱七八糟的"天书",其次是文件被以错误的编码打开,然后保存,比如一个文本文件原先是GB2312编码的,却以UTF-8编码打开再保存.要解决上述乱码问题,首先需要知道开发中哪些环节涉及到了编码: 1.文件编码:指的是页面文件(.html,.php等)本身是以何种编码来保存的.记事本和Dreamweaver在打开页面时候会自动识别文件编码因而不太会出问题.而ZendStud

php 生成唯一id的几种解决方法_php技巧

网上查了下,有很多的方法 1.md5(time() . mt_rand(1,1000000)); 这种方法有一定的概率会出现重复 2.php内置函数uniqid() uniqid() 函数基于以微秒计的当前时间,生成一个唯一的 ID. w3school参考手册有一句话:"由于基于系统时间,通过该函数生成的 ID 不是最佳的.如需生成绝对唯一的 ID,请使用 md5() 函数". 下面方法返回结果类似:5DDB650F-4389-F4A9-A100-501EF1348872 复制代码 代

PHP删除HTMl标签的三种解决方法_php技巧

方法1:直接取出想要取出的标记 复制代码 代码如下: <?php    //取出br标记    function strip($str){$str=str_replace("<br>","",$str);//$str=htmlspecialchars($str);return strip_tags($str);}?> 方法2.PHP 中有个 strip_tags 函数可以方便地去除 HTML 标签.echo strip_tags("

PHP 获取远程文件大小的3种解决方法_php技巧

1.使用file_get_contents() 复制代码 代码如下: <?php$file = file_get_contents($url);echo strlen($file);?> 2. 使用get_headers() 复制代码 代码如下: <?php$header_array = get_headers($url, true);$size = $header_array['Content-Length'];echo $size;?> PS:需要打开allow_url_fop

Win7系统连接vpn失败且提示错误代码868的2种解决方法

  方法一:修改一下本地连接或者无线连接的DNS服务器为8.8.8.8和8.8.4.4 1.右键单击右下角的网络连接图标"打开网络和共享中心"-点击正在使用的连接; 2.点击"属性"-"网络"-"Internet协议版本4"-"属性"; 3.选择"常规"选项卡-选中使用下面的DNS服务器地址,输入8.8.8.8和8.8.4.4,最后确定即可. 方法二:重新启动系统 1.在Win7系统中点