10

我有一个 HTML 表单。当访问者提交表单时,会调用一个 javascript 方法。此方法向我的服务器的 php 文件发送 AJAX 请求。我的问题是我需要获取访问者的 IP 地址。但是由于 AJAX 请求调用 php 文件,$_SERVER['REMOTE_ADDR']给了我我的服务器地址。在这种情况下,我如何获取访问者的 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'];
}
4

2 回答 2

28

$_SERVER['REMOTE_ADDR']会给你客户端的IP地址。但是,由于大概您使用的是与服务器客户端相同的机器,因此您获得了相同的 IP,这是正常的。一旦您将网站托管到 Web 服务器并从另一台机器远程访问它,您将获得该远程机器的地址。

因此,您无需再做任何事情。您的代码已经按预期工作。

于 2012-05-15T21:43:03.020 回答
1

ajax 请求仍然来自客户端,它应该给客户端 IP 而不是服务器。

于 2012-05-15T21:42:29.650 回答