2017-05-05 70 views
0

我想通過HTML FORM獲取發送服務器請求的服務器的IP地址。獲取通過html表格發送請求的服務器的IP地址

我了這樣的一個試驗:

HTML FORM(在服務器1 form.html):

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

PHP FILE:(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或其他類似服務之後的請求。

+0

您的*自己的IP地址*是與您的本地網絡服務器相關的'REMOTE_ADDR'' – RomanPerekhrest

回答

0

$_SERVER['SERVER_ADDR'];是執行腳本地址的服務器。 $_SERVER['REMOTE_ADDR'];是客戶端地址(發送請求到從查看服務器的點的服務器之一。 更多信息,請參見$_SERVER array documentation

+0

有誤解先生,我想獲取引用服務器的IP地址,而不是我自己的服務器。 –

+0

您可以從'$ _SERVER ['HTTP_REFERER']'獲取引用者,但爲了獲取引用者的IP地址,您必須從它發送請求。而是從瀏覽器執行表單,這就是爲什麼你要獲得自己的IP地址。要做到這一點,你可以在server1上使用一個php腳本來利用'curl'來POST到第二個服務器。恐怕這不是微不足道的。看到這裏的例子:http://php.net/manual/en/curl.examples.php –

+0

我不希望它從URL,請檢查我編輯過的帖子:) –

0

發送請求

服務器的服務器地址如果您希望瀏覽器發送請求的IP不發送請求。瀏覽器發送一個請求,服務器發送一個響應。

,使用$_SERVER['REMOTE_ADDR']

如果您想要發送響應的服務器的IP,請使用$_SERVER['SERVER_ADDR']

注意:$_SERVER['REMOTE_ADDR']可能實際上不代表瀏覽器的IP,如果有任何代理的方式。

更新:如果您需要REFERER服務器的IP地址,則必須進行自己的DNS查找。然而

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']很容易被僞造:

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

這會給你。

+0

'$ _SERVER ['SERVER_ADDR']'通過'GET'方法或僅'POST'發送請求,獲取太服務器IP? –

+0

兩者。 (加HEAD,OPTIONS,PUT,PATCH,DELETE,以及其他任何有...) –

+0

有誤解先生,我想獲取引用服務器的IP地址,而不是我自己的服務器。 –

相關問題