2012-05-15 73 views
5

我有一個HTML表單。當訪問者提交表單時,會調用一個javascript方法。 該方法向我的服務器的php文件發送一個AJAX請求。 我的問題是我需要得到訪問者的IP地址。但由於AJAX請求調用PHP文件,$ _ SERVER [「REMOTE_ADDR」]給我我的服務器的地址。 在這種情況下,我如何獲得訪客的IP? 謝謝在AJAX表單提交後獲取訪問者的IP地址

<form onsubmit="sendData(); return false;"> 
    // some data here 
</form> 

function sendData(){ 
    // do some work, get variables 
    $.ajax({ 
     url:"/mypage.php", 
     type:"GET", 
     data: { name: e }, 
     success : function(data) { 
      // do some work 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
     } 
    }) 
} 

// in mypage.php 
public function useData() { 
     $name=$_GET["name"]; 
     $ip = $_SERVER['REMOTE_ADDR']; 
} 
+1

瀏覽器是否發出與JS(AJAX)請求還是正常的網頁加載 - 你會看到的IP地址是相同的:客戶端(瀏覽器)的。 – AD7six

回答

22

$_SERVER['REMOTE_ADDR']會給你客戶端的IP地址。但是由於大概您使用的服務器與服務器客戶端使用的是同一臺機器,您將獲得相同的IP,這是正常的。將網站託管到Web服務器並從另一臺計算機遠程訪問它後,您將獲得該遠程計算機的地址。

所以沒有什麼更多你需要做的。您的代碼已按預期工作。

+0

謝謝。我錯過了那一點:) – trante

0

Ajax請求仍然是從客戶端發起,它應該是給客戶端的IP而不是服務器。