【问题标题】:Get client IP using PHP [duplicate]使用 PHP 获取客户端 IP [重复]
【发布时间】:2018-06-09 13:08:10
【问题描述】:

在你说它是重复的之前,我特此声明我已经尝试了这个网站上的所有东西,但它没有奏效。

我的问题是,我正在尝试获取我网站的访问者的 IP 地址以记录谁在访问它,但是,当我使用两个使用相同 Internet 连接的不同设备对其进行测试时,IP 返回相同两个。

当我尝试使用使用 4G 连接的设备时,它确实向我显示了不同的 IP。 这些 IP 的长度从 9 到 12 个字符不等。

我的问题是: 这些是“连接的IP”吗?如何获取特定的设备 IP?

用于获取 IP 的当前代码:

$ip = getenv('HTTP_CLIENT_IP')?:
getenv('HTTP_X_FORWARDED_FOR')?:
getenv('HTTP_X_FORWARDED')?:
getenv('HTTP_FORWARDED_FOR')?:
getenv('HTTP_FORWARDED')?:
getenv('REMOTE_ADDR');

编辑: 此代码在 header.php 文件中运行,该文件包含在 index.php(主文件)中。

【问题讨论】:

  • 您听说过“NAT”这个词吗?您通过 IP 地址识别用户的方法根本行不通。
  • 我没有,请解释一下。
  • 当使用通过同一路由器连接到互联网的 2 台设备(笔记本电脑、台式机)时,您将获得相同的 IP 地址 - 路由器的 IP 地址。一些公司使用网关,因此即使不是 1000 人,也有 100 人可能看起来拥有相同的 IP 地址,有时同一个人可能从同一台计算机连接并拥有多个不同的 IP 地址。
  • 另外我建议你简单地使用google并了解网络拓扑。
  • "那么我如何区分这些设备?甚至可能吗?" ...从网络服务器的角度来看?而不是通过路由器对用户机器进行反向黑客攻击? ....我敢说“不”。

标签: php ip environment-variables


【解决方案1】:

使用 REMOTE_ADDR 时,您将获得该用户的公共 IP 地址,因此您在同一网络上的 2 台设备上获得相同的 IP 地址。您可以做的是设置一个 cookie 来说明他们是否曾在您的网站上。然后,当用户访问您的网站时,检查 cookie,如果他们没有,那么您将获得另一个独特的点击。如果他们确实有那个 cookie,请忽略它。

我希望这会有所帮助。如果没有,请私信我

【讨论】:

    猜你喜欢
    • 2013-03-19
    • 2020-07-24
    • 2013-05-09
    • 2013-07-07
    • 2014-10-10
    • 2021-10-19
    • 2014-01-02
    • 2012-12-05
    • 2013-06-22
    相关资源
    最近更新 更多