【问题标题】:Read Webpage With User IP Address in php在php中读取带有用户IP地址的网页
【发布时间】:2012-06-09 06:10:25
【问题描述】:

我想制作一个脚本来处理网页并将该页面上的一些变量返回给用户!但我想用用户的 ip 打开该页面,因为该页面返回每个 ip 地址的特殊信息,所以我不能使用 curl 等。
换句话说,我想看到一个有他的 ip 的用户会看到的页面!!
我认为可以使用 iframe 打开该页面并使用一些 Javascript 将该 html 页面上传到服务器。
有没有人知道如何做到这一点?

【问题讨论】:

  • 问题绝对不清楚。请解释您要如何处理该页面以及“使用用户 ip 打开”是什么意思。你的意思是你想废弃页面 HTML 并检索数据,就好像它是某个(和可变的)IP 进行连接一样?
  • 据我了解,看看我的回答,这就是你正在尝试的@Hossein?
  • 实际上是的。我想打开一个页面,就像某个用户(当前用户)打开该页面一样。
  • 不,您不能从您的服务器欺骗用户的 IP 地址。 TCP 的 3 次握手使这成为不可能。为此,您必须在客户端的浏览器中使用 javascript,而且无论如何您都会遇到跨域安全限制。
  • 一般来说,你不能“伪造”服务器收到的IP地址。

标签: php javascript iframe


【解决方案1】:

使用php服务器变量$_SERVER['REMOTE_ADDR']获取用户IP地址。

您可以使用它来完成您想要的其余处理。

【讨论】:

  • 谢谢。但不想返回用户的 IP 地址。我想打开一个网页并查看具有其 ip 的示例用户将看到的所有内容!
  • 这很简单,有一些参数告诉php不要使用用户的IP地址,而是使用你提供的IP地址。如果已设置,请使用它而不是 $_SERVER['REMOTE_ADDR']。类似于:myPage.php?viewAs=127.0.0.1
【解决方案2】:

PHP 是一种服务器端语言。您使用它发出的任何请求都将来自服务器的 IP。你可以使用 Javascript 之类的东西,然后将结果传递给 PHP,但 PHP 本身不能直接发出请求。

【讨论】:

  • 感谢您的重播!但是我对jsp非常熟悉。我认为也许有办法在 iframe 中打开该页面并阅读它并将其发送到服务器!这是正确的方法吗?谢谢你!!我只能用jsp做到这一点吗?如果可以,你能帮我做吗?
  • 我猜你可以使用$_SERVER['REMOTE_ADDR']
  • 是的,您可以将其加载到 iframe 中,然后使用 Javascript(不是 JSP)读取内容并将其发送到服务器上的 PHP 脚本。
  • 谢谢。但我是jsp的初学者!你能帮我从我开始学习的地方开始,这样我就可以做到吗?谢谢
  • JavaScript 与 JSP 不同。
【解决方案3】:

听起来您想欺骗 IP 地址。这通常是不可能的,因为 IP 地址是通过三次 TCP 握手来验证的,并且响应将被发送到经过验证的 IP。要欺骗 IP 地址,您至少需要一个提升的网络位置,而这通常是您没有的。

【讨论】:

  • 谢谢。我想我可以通过将页面加载到 iframe 并使用 jsp 将信息从那里发送到服务器来实现。但我对jsp不太了解。知道怎么做吗?
  • 我不知道 JSP 与此有什么关系。如果您可以让用户打开您的页面,该页面具有指向另一个页面的 iframe,则用户将从他的 IP 中看到该页面。您可能可以在浏览器中使用 Javascript 执行某些操作,但这可能会由于同源策略限制而失败。
【解决方案4】:

当您使用$_SERVER['REMOTE_ADDR'] 时,它会返回访问者的 IP 地址。

如果您想做一些基于 IP 地址的聊天,您可以将 IP 地址保存在 MySQL 表中,并在此基础上显示消息。 :)

例如,我猜这段代码可以满足您的需求:

<?php echo "Hi User! Please open your IP Address @ {$_SERVER['REMOTE_ADDR']}"; ?>

这对我来说显示为:

Hi User! Please open your IP Address @ 122.164.125.224

对你来说:

Hi User! Please open your IP Address @ 127.0.0.1

这是你正在尝试的吗?

在你的情况下,为了让用户看到这种方式,有一个 IP 地址列表,并基于该过程输出:

<?php
    $specialips = array('127.0.0.1', '122.164.122.164', '10.0.0.52');
    if(in_array($_SERVER['REMOTE_ADDR'], $specialips))
        echo 'Welcome Special User!';
    else
        echo 'Hello Normal User!';
?>

【讨论】:

  • 谢谢。但不想返回用户的 IP 地址。我想打开一个网页并查看具有其 ip 的示例用户将看到的所有内容!
  • 立即查看。希望这会有所帮助!
  • 对不起,我想你误会了我的意思!我想为代理服务器之类的用户打开一个页面,并处理其数据并将一些数据返回给用户。起初我假设使用 curl 等使用服务器打开页面,但是该页面返回每个 IP 地址的特殊数据,所以我无法使用服务器打开该页面,因为这样会返回服务器 IP 地址的信息!
  • 在那种情况下是不可能的,当你说你要做代理服务器时,只会发送你服务器的IP地址。但你可以做一件事。查看 Squid 代理服务器的源代码,为什么不实现某种用户和权限概念?
【解决方案5】:

如果幸运的话,您可以通过注入的 X-Forwarded-For 标头伪造 IP。可能其他脚本就是愚蠢地落在这个上面(就像大多数脚本一样)。

请查阅您使用的 HTTP 层(PHP、curl 等)的文档,了解如何指定请求标头。

【讨论】:

    猜你喜欢
    • 2012-02-01
    • 1970-01-01
    • 2015-09-15
    • 2015-10-27
    • 2018-07-27
    • 1970-01-01
    • 2014-06-10
    • 1970-01-01
    • 2017-08-16
    相关资源
    最近更新 更多