我有一个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
});
});
});