我想通过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,而是云浮动之一,例如,我希望制作与perfectmoney相同的系统,你把你的真实IP放在你的仪表板上只接受来自的请求,即使你是在cloudflare后面,perfectmoney检测到真实的IP。
在我的仪表板上,我可以按范围放置IP:127.0.0.1 / 24,127.0.0。* ...仅接受来自的请求,即使域名位于cloudflare或其他类似服务之后。
答案 0 :(得分:0)
$_SERVER['SERVER_ADDR'];
是执行脚本地址的服务器。 $_SERVER['REMOTE_ADDR'];
是客户端地址(从服务器的角度将请求发送到服务器的地址)。
有关详细信息,请参阅$_SERVER array documentation。
答案 1 :(得分:0)
服务器发送请求的地址
服务器不发送请求。浏览器发送请求,服务器发送响应。
如果您希望浏览器的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']
很容易被伪造。