【问题标题】:php notice Undefined index [duplicate]php通知未定义索引[重复]
【发布时间】:2011-12-04 16:48:08
【问题描述】:

可能重复:
PHP: “Notice: Undefined variable” and “Notice: Undefined index”

我在我的网站上收到以下 php NOTICES。我已经检查了通知中提到的行,但这些行已被注释。我还可以检查什么来修复此通知?

PHP 5.0.4 (WINNT)
NOTICE: [8] Undefined index: HTTP_REFERER Line: 4 File: d:\IpPlan\www\adodb\adodb.inc.php(1) : eval()'d code
NOTICE: [8] Undefined index: HTTP_REFERER Line: 4 File: d:\IpPlan\www\adodb\adodb-time.inc.php(1) : eval()'d code
NOTICE: [8] Undefined index: HTTP_REFERER Line: 4 File: d:\IpPlan\www\adodb\adodb-iterator.inc.php(1) : eval()'d code
NOTICE: [8] Undefined index: HTTP_REFERER Line: 4 File: d:\IpPlan\www\class.dbflib.php(1) : eval()'d code
NOTICE: [8] Undefined index: HTTP_REFERER Line: 4 File: d:\IpPlan\www\config.php(1) : eval()'d code

【问题讨论】:

  • 确实是你,你有什么问题?
  • @mbrownnyc 是对的——这真的应该去 SO——问题是代码,而不是服务器。

标签: windows-server-2003 php


【解决方案1】:

您在某个时候尝试访问数组中的索引HTTP_REFERRER,但从未为该索引设置任何值。通常这是因为您的代码中有类似 $_SERVER['HTTP_REFERRER'] 的内容。

解决方法是在未先检查它是否已定义(使用isset())之前不访问可能未定义的数组元素。请参阅the PHP manual 了解更多信息。

【讨论】:

    【解决方案2】:

    您可以禁止显示通知(毕竟它们只是通知,通知您某事,而不是错误或警告)。

    详情请看:http://php.net/manual/en/function.error-reporting.php

    您可以在脚本中设置:

    error_reporting(E_ALL ^ E_NOTICE);
    

    或者在您的 PHP.INI 文件中查找错误报告并在那里进行编辑(推荐)。

    【讨论】:

    • 虽然我同意在生产服务器上禁用错误报告(或至少不将其发送到浏览器),但“隐藏消息并假装问题不存在”的想法很糟糕 -这相当于说“您可以忽略那些编译器消息 - 它们只是警告。” -- 如果有问题的代码依赖于设置的 HTTP Referrer,则简单地忽略此通知可能会导致以后出现问题。处理原因(错误代码),不要隐藏症状(NOTICE 消息)。
    • @voretaq7,我完全同意。但是,如果它是生产服务器,并且购买了/第 3 方软件,最好的方法是联系该方并在上述时间内屏蔽通知。
    • 当然,同时供应商发出适当的噪音来修复他们的代码。
    【解决方案3】:

    使用isset()函数检查变量是否设置。

    用这个代替你现在用的。

    if (isset($_SERVER['HTTP_REFERER'])){
    echo $_SERVER['HTTP_REFERER'];
    //and whatever you need to go.
    }
    
    else{
    echo "Referer was null";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-26
      • 2011-06-18
      • 1970-01-01
      • 1970-01-01
      • 2014-01-27
      相关资源
      最近更新 更多