Comment obtenir L'adresse IP du client en utilisant jQuery
je veux savoir comment obtenir l'adresse IP du client en utilisant jQuery?
Est-ce possible? Je sais que javascript pur ne peut pas, mais j'ai obtenu un certain code en utilisant JSONP
à partir du débordement de la pile lui-même.
alors, y a-t-il une solution de contournement en utilisant jQuery?
3 réponses
jQuery peut gérer JSONP, il suffit de passer une url formatée avec le callback=? paramètre $.getJSON
méthode, par exemple:
$.getJSON("https://api.ipify.org/?format=json", function(e) {
console.log(e.ip);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
cet exemple est d'un service JSONP très simple implémenté avec api.ipify.org
.
si vous n'êtes pas à la recherche d'une solution multi-domaines, le script peut être simplifié encore plus, puisque vous n'avez pas besoin du paramètre callback, et que vous retournez JSON pur.
un simple appel AJAX à votre serveur, et puis la logique de serverside pour obtenir l'adresse ip devrait faire l'affaire.
$.getJSON('getip.php', function(data){
alert('Your ip is: ' + data.ip);
});
alors en php vous pouvez faire:
<?php
/* getip.php */
header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
print json_encode(array('ip' => $ip));
function GetUserIP(){
var ret_ip;
$.ajaxSetup({async: false});
$.get('http://jsonip.com/', function(r){
ret_ip = r.ip;
});
return ret_ip;
}
si vous voulez utiliser L'IP et l'assigner à une variable, essayez ceci. Appelez simplement GetUserIP()