[英]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.