【问题标题】:Undefined index error while trying to run $_SERVER['HTTP_X_FORWARDED_FOR']尝试运行 $_SERVER['HTTP_X_FORWARDED_FOR'] 时出现未定义的索引错误
【发布时间】:2017-07-16 07:34:17
【问题描述】:

我试图打印超全局变量$_SERVER['HTTP_X_FORWARDED_FOR'] 以测试我的网站的代理阻止程序。当我打开文件时,服务器返回此错误:

注意:未定义索引:/Applications/XAMPP/xamppfiles/htdocs/test/test.php 第 2 行中的 HTTP_X_FORWARDED_FOR

这是文件里面的内容:

<?php
echo $_SERVER['HTTP_X_FORWARDED_FOR'];
?>

有什么问题?那个变量是不可打印的吗?好像没有定义变量时出现的错误。

提前致谢。

【问题讨论】:

  • 来自PHP doc: You may or may not find any of the following elements in $_SERVER. Note that few, if any, of these will be available (or indeed have any meaning) if running PHP on the command line.

标签: php


【解决方案1】:

所有以HTTP_ 为前缀的$_SERVER 变量都代表您从客户端收到的HTTP 标头。

唯一始终存在的 HTTP 标头是 Host,所以...对于其他所有内容,您必须先检查它是否存在。

【讨论】:

    【解决方案2】:

    使用

    if(array_key_exists("HTTP_X_FORWARDED_FOR", $_SERVER))
    

    在尝试访问之前检查变量是否存在

    【讨论】:

      【解决方案3】:

      当代理转发未正确完成时,将发生此错误。你能分享更多信息吗?

      另外我建议使用 getenv 方法并在 var 是否存在之前检查(条件和分配都可以写在 if 语句中):

      if ($forwarded = getenv('HTTP_X_FORWARDED_FOR')) {
          echo $forwarded;
      }
      

      仅供参考:如果环境变量不存在,getenv 返回FALSE

      【讨论】:

        猜你喜欢
        • 2021-02-07
        • 2020-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-02
        • 1970-01-01
        • 1970-01-01
        • 2013-02-14
        相关资源
        最近更新 更多