
function get_ipinfo($ip)
{
if ($ip == "") return false;
$sql = "SELECT * FROM typing_ipinfo WHERE ii_ip = '".$ip."'";
$row = sql_fetch($sql);
if ($row) {
$data = json_decode($row['ii_info'], true);
} else {
// 외부 API 호출
$url = 'https://ipinfo.io/'.$ip.'/json?token=';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode != 200 || !$response) {
return false;
}
$data = json_decode($response, true);
$escaped_response = addslashes($response);
$sql = "INSERT INTO typing_ipinfo
SET ii_ip = '".$ip."', ii_info = '".$escaped_response."', ii_datetime = '".G5_TIME_YMDHIS."'";
sql_query($sql, false);
}
if (!isset($data['region']) || !isset($data['city']) || !isset($data['loc'])) {
return "위치 정보 없음";
}
$region = htmlspecialchars($data['region'], ENT_QUOTES, 'UTF-8');
$city = htmlspecialchars($data['city'], ENT_QUOTES, 'UTF-8');
$loc = htmlspecialchars($data['loc'], ENT_QUOTES, 'UTF-8');
$str = $region . " " . $city . " ";
$str .= "<a href='https://maps.google.com/?q={$loc}&ll={$loc}&z=8' target='_blank'>(map)</a>";
return $str;
}
https://ipinfo.io

CREATE TABLE `typing_ipinfo` (
`ii_idx` int(11) NOT NULL AUTO_INCREMENT,
`ii_ip` varchar(45) NOT NULL,
`ii_info` text NOT NULL,
`ii_datetime` datetime NOT NULL,
PRIMARY KEY (`ii_idx`),
UNIQUE KEY `ii_ip` (`ii_ip`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
<?php echo get_ipinfo($row['ip']); ?>
[광고] 추억 속 타자 연습, 다시 시작해볼까요? - https://김타자.kr
댓글 2개
게시글 목록
| 번호 | 제목 |
|---|---|
| 17443 | |
| 17442 |
PHP
세션타임아웃기능
|
| 17441 | |
| 17440 | |
| 17438 |
PHP
완벽한 UTF8 지원하기
|
| 17436 | |
| 17435 | |
| 17433 | |
| 17432 | |
| 17430 |
JavaScript
자바스크립트로 ctrl+F기능과 유사한 웹페이지내 문자검색기능 작성
1
|
| 17426 | |
| 17416 | |
| 17413 | |
| 17401 | |
| 17391 | |
| 17379 | |
| 17375 | |
| 17374 | |
| 17362 | |
| 17350 |
JavaScript
지정한 범위내에서 랜덤으로 숫자출력하는 스크립트
3
|
| 17348 |
MySQL
배너 노출 관련 쿼리
4
|
| 17341 |
MySQL
이진 트리 순회... 무한 계층형 트리
2
|
| 17339 | |
| 17335 | |
| 17334 | |
| 17333 | |
| 17332 | |
| 17331 | |
| 17330 | |
| 17329 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기