在提交 AJAX 表单后获取访问者的 IP 地址


Get IP address of visitor after an AJAX form submit

我有一个HTML表单。当访问者提交表单时,将调用javascript方法。此方法将 AJAX 请求发送到服务器的 php 文件。我的问题是我需要获取访问者的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'];
}

$_SERVER['REMOTE_ADDR']将为您提供客户端的IP地址。但是,由于您可能使用的是与服务器客户端相同的机器,因此您可以获得相同的IP,这是正常的。一旦您将网站托管到Web服务器并从另一台计算机远程访问它,您将获得该远程计算机的地址。

所以你不需要再做任何事情了。您的代码已按预期工作。

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

尝试下面的代码,但修改它,因为它是为了在加载页面时运行,它使用 jquery 和一些免费的 IP API

$(document).ready(function(){
  $.getJSON("https://api.ipify.org?format=json", function(data){
    var userIP = data.ip;
    $.getJSON("https://api.ipgeolocationapi.com/geolocate/" + userIP, function(data){
      var userLat = data.geo.latitude;
      var userLng = data.geo.longitude;
      // You can now use the user's latitude and longitude to determine if they're within your geo fence
    });
  });
});