【问题标题】:"Do not Access Superglobal $_SERVER Array Directly" on Netbeans 7.4 for PHP“不要直接访问超全局 $_SERVER 数组”在 Netbeans 7.4 for PHP
【发布时间】:2014-02-19 18:33:48
【问题描述】:

是的,一个类似的问题已发布并正确回答。 Warning "Do not Access Superglobal $_POST Array Directly" on Netbeans 7.4 for PHP

那篇文章很有帮助。但它并没有解决我的问题。

我的浏览器中没有任何输出。

我应用了将 $_POST 与 $_SERVER 交换的所有选项。

我的原始代码:

$user_ip = $_SERVER[ 'REMOTE ADDR'];

我的代码按照其他问题/答案的建议修改了几种方式

user_ip = filter_input(INPUT_SERVER, 'REMOTE_ADDR');
user_ip = filter_input_array(INPUT_SERVER, 'REMOTE_ADDR');

仍然没有出局

背景。

在阅读这些教程时,我在 index.php 中的代码之后添加代码。

我一直注释掉之前的代码。

我错过了一些 cmets,那时我实际上确实有输出

::1

我期望的输出是

127,0,0,1

当我注释了上一个教程中的所有代码时 我不再得到任何输出。

我将通过一个非常好的教程,但他正在使用 xampp。 我在 Mac 上并安装了放大器。 不知道这是否重要。

如果您想查看,请导航至 thenewboston.com 教程 php 第 33 课 http://thenewboston.org/watch.php?cat=11&number=33 第一分钟左右。

【问题讨论】:

  • REMOTE ADDR(带空格)!= REMOTE_ADDR(带下划线)...::1 是 IPv6 环回地址,正如 127.0.0.1 是 IPv4 的环回地址。跨度>
  • 欢迎来到 Stack Overflow!请务必阅读在帖子编辑器中单击橙色问号时出现的有用格式指南。
  • @Marc b 对不起。我在 REMOTE_ADDR 中确实有一个下划线。
  • @marc b 诚然,不是编程新手,而是 php 新手。为什么我没有得到输出?我正在使用 localhost 学习这个。为什么我的代码中还要有 REMOTE_ADDR。
  • 好吧,你的 PHP 代码坏了。您没有$,因此您试图将过滤结果分配给未定义的变量...$user_ip = $_SERVER['REMOTE_ADDR']。没有必要过滤那个。这将是一个由 PHP 确定的 IP 地址。用户无法在其中注入恶意数据。

标签: php netbeans


【解决方案1】:

当 PHP 基于 FastCGI 时, filter_input(INPUT_SERVER,… 和 filter_input_array(INPUT_SERVER… 不返回任何结果!

PHP manual entry on filter_input, paying particular attention to the comment by anthony dot parsons

【讨论】:

  • 谢谢。这也让我有些沮丧。 Mac 上的 MAMP 选项之一是运行多个版本的 PHP,这需要将 PHP 作为 FastCGI 运行......因此除了 PHP_SELF 之外没有filter_input_array(INPUT_SERVER) 的输出。
【解决方案2】:

您可以直接使用$_SERVER,不需要使用filter_input。输出::1只是因为您在Localhost上运行此代码。如果您在服务器上尝试您的代码(检查您在 RemoteHost 上的代码),那么它将提供您客户端的 IP。这是我获取客户IP的代码。 See Snapshot Here

   if ($_SERVER['HTTP_CLIENT_IP'])
    {
        $ipaddress = $_SERVER['HTTP_CLIENT_IP'];
    }
    else if($_SERVER['HTTP_X_FORWARDED_FOR'])
    {
        $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
    }
    else if($_SERVER['HTTP_X_FORWARDED'])
    {
        $ipaddress = $_SERVER['HTTP_X_FORWARDED'];
    }
    else if($_SERVER['HTTP_FORWARDED_FOR'])
    {
        $ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
    }
    else if($_SERVER['HTTP_FORWARDED'])
    {
        $ipaddress = $_SERVER['HTTP_FORWARDED'];
    }
    else if($_SERVER['REMOTE_ADDR'])
    {
        $ipaddress = $_SERVER['REMOTE_ADDR'];
    }

【讨论】:

    猜你喜欢
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-13
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多