繁体   English   中英

获取通过html表单发送请求的服务器的IP地址

[英]Get IP address of the server sending a request via html form

我想获取通过HTML FORM发送请求的服务器的IP地址。

我做了这样的测试:

HTML FORM(服务器1中的form.html):

<form action="URL_OF_SERVER2/rec.php" method="post">
<input type="submit" value="submit">
</form>

PHP文件:(rec.php)

<?php
echo $_SERVER['HTTP_REFERER'].'<br><br>'; // To get referal URL
echo $_SERVER['REMOTE_ADDR']; // To get IP Address
?>

但是当我测试时,我得到了自己的IP地址,而不是服务器之一。

第二次尝试:

<?php
echo $_SERVER['HTTP_REFERER'].'<br><br>'; // To get referal URL
$result = parse_url($_SERVER['HTTP_REFERER']);
echo gethostbyname($result['host']); // To get IP Address
?>

但这不是真正的IP,而是cloudflare的一个,例如,我要与perfectmoney制作相同的系统,您将真实IP放在仪表板上以仅接受来自的请求,即使您身在cloudflare后面,perfectmoney也可以检测到真实IP。

在我的仪表板上,我可以按以下范围放置IP:127.0.0.1/24,127.0.0。* ...以仅接受来自的请求,即使域名位于cloudflare或其他类似服务的后面。

$_SERVER['SERVER_ADDR']; 是执行脚本地址的服务器。 $_SERVER['REMOTE_ADDR']; 是客户端地址(从服务器的角度将请求发送到服务器的地址。有关更多信息,请参见$ _SERVER数组文档

发送请求的服务器地址

服务器未发送请求。 浏览器发送请求,服务器发送响应。

如果要浏览器的IP发送请求,请使用$_SERVER['REMOTE_ADDR']

如果要服务器的IP发送响应,请使用$_SERVER['SERVER_ADDR']

注意:如果有任何代理, $_SERVER['REMOTE_ADDR']可能实际上不代表浏览器的IP。

更新:如果需要REFERER服务器的IP地址,则必须进行自己的DNS查找。

$data = parse_url( $_SERVER['HTTP_REFERER']);
print_r(dns_get_record($data['host']));

这将为您提供:

Array
(
    [0] => Array
        (
            [host] => www.google.com
            [class] => IN
            [ttl] => 270
            [type] => A
            [ip] => 172.217.9.68
        )

    [1] => Array
        (
            [host] => www.google.com
            [class] => IN
            [ttl] => 14
            [type] => AAAA
            [ipv6] => 2607:f8b0:4009:816::2004
        )

)

但是请注意,这是不可靠的,因为$_SERVER['HTTP_REFERER']很容易被伪造。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM