2013-11-26 3 views
0

여기에서 내 페이지에서 로그인 버튼을 클릭하면 사용자 IP를 얻으려고합니다. 마지막으로 IP에서 city 이름을 얻고 싶습니다.클라이언트 IP를 얻은 다음 도시 이름을

function get_client_ip() { 
    $ipaddress = ''; 
    if ($_SERVER['HTTP_CLIENT_IP']) 
     $ipaddress = $_SERVER['HTTP_CLIENT_IP']; 
    else if($_SERVER['HTTP_X_FORWARDED_FOR']) 
     $ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR']; 
    else if($_SERVER['HTTP_X_FORWARDED']) 
     $ipaddress = $_SERVER['HTTP_X_FORWARDED']; 
    else if($_SERVER['HTTP_FORWARDED_FOR']) 
     $ipaddress = $_SERVER['HTTP_FORWARDED_FOR']; 
    else if($_SERVER['HTTP_FORWARDED']) 
     $ipaddress = $_SERVER['HTTP_FORWARDED']; 
    else if($_SERVER['REMOTE_ADDR']) 
     $ipaddress = $_SERVER['REMOTE_ADDR']; 
    else 
     $ipaddress = 'UNKNOWN'; 

    return $ipaddress; 
} 

위의 경우 이외에 더 좋고 빠른 방법이 있습니까?

그리고 얻을 수있는 도시

, 자세한 내용은

$ip = get_client_ip(); 
$details = json_decode(file_get_contents("http://ipinfo.io/{$ip}")); 
echo $details->city; 
+0

로컬 데이터베이스의 범위에 비해 실행 속도는 더 빠르지 만 가치는 없다고 생각합니다. –

답변

1
<?php 
require_once("userip/ip.codehelper.io.php"); 
require_once("userip/php_fast_cache.php"); 

$_ip = new ip_codehelper(); 

$real_client_ip_address = $_ip->getRealIP(); 
$visitor_location  = $_ip->getLocation($real_client_ip_address); 

$guest_ip = $visitor_location['IP']; 
$guest_country = $visitor_location['CountryName']; 
$guest_city = $visitor_location['CityName']; 
$guest_state = $visitor_location['RegionName']; 

echo "IP Address: ". $guest_ip. "<br/>"; 
echo "Country: ". $guest_country. "<br/>"; 
echo "State: ". $guest_state. "<br/>"; 
echo "City: ". $guest_city. "<br/>"; 

?> 

여기를 살펴 http://www.a2zwebhelp.com/visitor-location-in-php

당신은 도시에 관한 IP 범위를 다운로드하고 IP를 테스트 할 수 있도록, DB에 저장할 수
+0

라이브러리를 사용하고 있다면 링크를 제공해서는 안되며 다운로드 위치는 어디입니까? – Peon

+0

위 링크에 다운로드 링크가 있습니다 –

관련 문제