작업중 접속자 위치파악(국가)이 필요해서 검색기록남김
까페24호스팅의 경우 $_SERVER 변수에
[HTTP_HOSTING_CONTINENT_CODE] => AS - 대륙
[HTTP_HOSTING_COUNTRY_CODE] => KR - 국가
으로 나오는것 확인
ip로 확인하는방법도 있는데 (기존방법)
기존엔 geoip 데이터를 디비에 셋팅해서 사용했으나 검색중에 좋은것을발견함.
http://stackoverflow.com/questions/12553160/getting-visitors-country-from-their-ip
http://www.geoplugin.com/
인데 무료로 제공하는듯
스택답변에는 xml로 되있던데 json도 되는것확인
http://www.geoplugin.net/xml.gp?ip=아이피
http://www.geoplugin.net/json.gp?ip=아이피
우리나라는 호스팅환경상 url로 컨텐츠열기가 금기되있어서 (file_get_contents,fopen)
소켓으로 자료받아와서 가공처리함.
json결과 : query ip : 125.209.222.142
//
//
$_test = get_socket('http://www.geoplugin.net/json.gp',array('ip'=>'125.209.222.142'));
$_ret = json_decode($_test['content'],true);
Array
(
[geoplugin_request] => 125.209.222.142
[geoplugin_status] => 200
[geoplugin_credit] => Some of the returned data includes GeoLite data created by MaxMind, available from http://www.maxmind.com.
[geoplugin_city] => Seongnam
[geoplugin_region] => Gyeonggi
[geoplugin_areaCode] => 0
[geoplugin_dmaCode] => 0
[geoplugin_countryCode] => KR
[geoplugin_countryName] => Korea, Republic of
[geoplugin_continentCode] => AS
[geoplugin_latitude] => 37.438599
[geoplugin_longitude] => 127.137802
[geoplugin_regionCode] => 13
[geoplugin_regionName] => Gyeonggi
[geoplugin_currencyCode] => KRW
[geoplugin_currencySymbol] => ₩
[geoplugin_currencySymbol_UTF8] => ₩
[geoplugin_currencyConverter] => 1079.6754
)
//
//
상세한 ip별 좌표, 통화,환율까지 알려줌...
========================================
추가
모바일기기사용시 geolocation 으로 좌표가져오기
//
//
//위치정보가져오기
$('#location_text').click(function(){
loadLocation();
});
function loadLocation() {
if (navigator.geolocation) {
$('#location_text').val('위치조회중...');
getloc();
} else {
$('#location_text').val('위치정보를 사용할수 없습니다.');
}
}
function getloc() {
navigator.geolocation.watchPosition(updateLocation, handleLocationError, {maximumAge:2000});
}
function updateLocation(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
var accuracy = position.coords.accuracy;
var loc_txt = latitude + ',' + longitude+'('+accuracy+')';
$('#location_text').val(loc_txt);
}
function handleLocationError(error) {
switch(error.code) {
case error.UNKNOWN_ERROR:
$('#location_text').val('알수없는 에러발생.');
break;
case error.PERMISSION_DENIED:
$('#location_text').val('위치정보사용에 동의해주세요');
break;
case error.POSITION_UNAVAILABLE:
$('#location_text').val('위치정보를 사용할수 없는 상태입니다.');
break;
case error.TIMEOUT:
$('#location_text').val('시간초과');
break;
}
}
</script>
//
//
===============================================================================
추가
좌표로 한글주소얻기 (구글이용)
https://developers.google.com/maps/documentation/geocoding/?hl=ko
//
//
$_param = array('latlng'=> '좌표위도,좌표경도' ,'sensor'=>'false', 'language'=>'ko');
//$_google = get_socket('http://maps.googleapis.com/maps/api/geocode/json',$_param,'GET'); -> 구글에선 안되서 curl 사용
//$_gres = json_decode($_google['content'],true);
$curlObj = curl_init();
curl_setopt($curlObj, CURLOPT_URL, 'https://maps.googleapis.com/maps/api/geocode/json?'.http_build_query($_param));
curl_setopt($curlObj, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curlObj, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curlObj, CURLOPT_HEADER, 0);
curl_setopt($curlObj, CURLOPT_HTTPHEADER, array('Content-type:text/html;'));
$response = curl_exec($curlObj);
$json = json_decode($response,true);
curl_close($curlObj);
var_dump($json);
//주소로 좌표얻을땐 위 $_param 값셋팅
$_param = array('address '=> '주소' ,'sensor'=>'false', 'language'=>'ko');
//
//
구글맵연동 js : http://work.gooroo.co.kr/test/google_map.php
'프로그램.코딩' 카테고리의 다른 글
참고및공부할곳들 (0) | 2016.06.30 |
---|---|
php 단순 디렉터리 탐색기 (0) | 2015.07.14 |
해외결제 A.u.t.h.o.r.i.z.e.n.e.t. 모듈 (0) | 2015.01.06 |
php 정규식 이것저것 (0) | 2015.01.06 |
php4 용 소켓통신..(agent,cookie 추가) (0) | 2014.04.17 |
댓글