【问题标题】:Grab public IP address using Laravel使用 Laravel 获取公共 IP 地址
【发布时间】:2015-08-20 21:44:02
【问题描述】:

我现在的IP是:24.62.137.161

当我使用

$ip = $request->getClientIp(); dd($ip);

我不断收到::1

如何获取24.62.137.161 ? 如果可能的话,我不确定我是否正在尝试做什么。

任何提示/建议将不胜感激。

【问题讨论】:

  • ::1 是 127.0.0.1 的 IPv6 版本,所以我猜你是在给自己打电话。我不知道您使用的是哪个操作系统,但也许您应该看看使用 eth0 而不是 lo 进行请求?编辑:因为你想要你的外部地址,可能你将不得不使用一些环回。现在,除了启动几个虚拟机,更改它们的 IP 地址并在它们之间进行请求之外,还没有真正的解决方案?
  • 试试这个,看看你会得到什么结果print_r($_SERVER['REMOTE_ADDR']);
  • 您是否正在运行本地(开发)服务器并试图通过访问它来获取您自己的 IP 地址?
  • @Bogdan :我不想获取本地主机的 ip。我想获取查看我网站的用户的 IP。基本上,我想获取我的用户 IP 地址。我不确定这是否可能。
  • @ihue 这应该在可公开访问的服务器中完美运行。如果你只是想感受一下,你可以去 laravel 入口脚本(不知道你是否改变了任何默认值,可能应该是 app.php 或类似的东西)并覆盖 $_SERVER['REMOTE_ADDR'] 到你想要的ip。请记住,这是一个让您能够测试它的技巧。获得自己的 IP 将花费您大量的阅读时间和精力

标签: php laravel laravel-4 laravel-5 ip


【解决方案1】:
$ip = trim(shell_exec("dig +short myip.opendns.com @resolver1.opendns.com"));

dd("Public IP: ".$ip); //"Public IP: 24.62.137.161"

【讨论】:

  • 啊,非常感谢。这就是我从 2 天开始看到的
  • 很好的答案,拯救了我的一天!!! ,你能解释一下这个命令dig +short myip.opendns.com @resolver1.opendns.com做什么吗?
  • @ßiansorÅ.Ålmerol 有人可以建议如何以相同的方式获取客户端 IP 地址。
【解决方案2】:

尝试使用 Laravel 获取公共 IP 地址,

Request::getClientIp()

【讨论】:

  • 对不起。我已经试过了。我不断收到::1。谢谢你的建议。 :-)
  • 当我在客户端上触发 ifconfig 时,我得到了客户端的实际公共 IP,当我从客户端向我的 laravel 服务器请求并使用 Request::getClientIp() 记录 IP 时,我变得不同了客户端的 IP。
【解决方案3】:

您可以通过以下函数获得确切的IP gethostbyname(trim(hostname))

【讨论】:

    猜你喜欢
    • 2011-03-16
    • 2017-09-23
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    相关资源
    最近更新 更多