PHP Notice: Undefined index和Undefined variable问题的解决方法:

来源:互联网 发布:网络端口是啥 编辑:程序博客网 时间:2024/05/22 12:01

Undefined index的解决方法:

首先,这个不是错误,是warning。所以如果服务器不能改,每个变量使用前应当先定义。


    方法1:服务器配置修改 
    修改php.ini配置文件,error_reporting = E_ALL & ~E_NOTICE


    方法2:对变量进行初始化,规范书写(比较烦琐,因为有大量的变量)。但还没有找到好定义方法,望大家指教


    方法3:每个文件头部加上:error_reporting(0); 如果不行,只有打开php.ini,找到display_errors,设置为display_errors = Off。以后任何错误都不会提示。


    方法4 :做判断:isset($_GET["page"])      if-else判断

    或者加上''@''表示这行如果有错误或是警告不要輸出
    如:@$page=$_GET["page"]


    方法5: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="";




Undefined variable的解决方法


PHP默认配置会报这个错误,我的PHP版本是5.2.13,存在这个问题:
  
  Notice: Undefined variable
  
  这就是将警告在页面上打印出来,虽然这是有利于暴露问题,但实现使用中会存在很多问题。
  
  需要设置显示错误级别,来解决问题。
  
  网络上的通用解决办法是修改php.ini的配置:
  
  解决方法:
  
  1) error_reporting设置:
  
  找到error_reporting = E_ALL
  
  修改为error_reporting = E_ALL & ~E_NOTICE
  
  2) register_globals设置:
  
  找到register_globals = Off
  
  修改为register_globals = On
  
  我发现在php代码中直接使用
    
  error_reporting(E_ALL & ~E_NOTICE);
  
  可以解决这个问题,小技巧记一下,呵呵。



另一种类似的方法,提示use of undefined constant

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

  关闭 PHP 提示的方法

  搜索php.ini:

  error_reporting = E_ALL

  改为:

  error_reporting = E_ALL & ~E_NOTICE

  还有个不是办法的办法就是

  在每个文件头上加

  error_reporting(0); 虽然不好弄但是可以解决问题

 

 

这是书写不规范导致的,如:$row[name],   正确写法为$row['name'];










Undefined index的解决方法:


虽然可以通过设置错误显示方式来隐藏这个提示,但是这样也有隐患,就是在服务器的日志中会记录这些提示,导致日志文件异常庞大


平时用$_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'] 就行啦~

0 0
原创粉丝点击