簡體   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