>  기사  >  백엔드 개발  >  ThinkPHP가 IP 포지셔닝을 위해 UTFWry 주소 라이브러리를 사용하는 방법에 대해

ThinkPHP가 IP 포지셔닝을 위해 UTFWry 주소 라이브러리를 사용하는 방법에 대해

不言
不言원래의
2018-06-19 15:31:443149검색

웹 애플리케이션에서는 IP 주소를 기반으로 관련 액세스 로그를 찾고 기록하는 것도 매우 일반적인 요구 사항입니다. ThinkPHP에서는 IP 주소를 쉽게 얻고 찾을 수 있습니다.

공식 웹사이트에서 IP 포지셔닝 확장 클래스 라이브러리를 다운로드할 수 있습니다. 또는 확장 패키지를 다운로드하세요. 이 확장 클래스는 이미 포함되어 있습니다. 업로드된 클래스 라이브러리를 별도로 다운로드한 경우 압축을 푼 IpLocation.class.php를 ThinkPHP/Extend/Library/ORG/Net/(없으면 수동으로 생성) 디렉터리에 넣습니다.

1. IP 주소 얻기

사용자가 방문한 IP 주소만 얻으려면 시스템에 내장된 get_client_ip 함수를 직접 사용하십시오. 이 함수는 ThinkPHP 표준 모드에 내장되어 있는 방법입니다. 직접 사용하면 $_SERVER['HTTP_CLIENT_IP']보다 호환성이 좋습니다. 사용법:

$ip = get_client_ip();

get_client_ip는 IP 주소의 다중 상황 감지 및 합법성 확인을 지원합니다. . 획득한 IP 주소가 불법인 경우 0.0.0.0을 반환합니다.
원하는 경우 IPV4 주소 번호도 반환될 수 있습니다. 예:

$ip = get_client_ip(1);

반환된 결과는 다음과 같습니다.

2130706433

주소 범위 및 비교에 사용할 수 있습니다.

2. IP 주소 위치 확인
단순히 IP 주소를 얻는 것만으로는 애플리케이션의 요구 사항을 완전히 충족할 수 없습니다. IP 주소 위치 확인 기능을 사용하면 사용자 영역을 얻을 수 있습니다. IP 위치 기능을 사용하려면 IpLocation 확장 클래스 라이브러리 외에 IP 주소 라이브러리 파일도 필요합니다.ThinkPHP는 기본적으로 UTF8 인코딩을 사용하므로 UTF8 형식의 IP 주소 라이브러리 파일을 사용하는 것이 가장 좋습니다. 순수 gbk로 인코딩된 IP 주소 라이브러리 파일인 경우, 얻은 결과에 대해 인코딩 변환을 수행해야 합니다(아래 언급).
압축 해제된 주소 라이브러리 파일 UTFWry.dat는 IpLocation 확장 클래스 라이브러리가 있는 디렉터리에 배치될 수 있습니다.
사용법:

import('ORG.Net.IpLocation');// 导入IpLocation类
$Ip = new IpLocation(); // 实例化类
$location = $Ip->getlocation('218.79.93.194'); // 获取某个IP地址所在的位置

반환된 위치 변수는 다음을 포함하는 배열입니다.

$location['ip'] // IP地址
$location['beginip'] // 用户IP所在范围的开始地址
$location['endip'] // 用户IP所在范围的结束地址
$location['country'] // 所在国家或者地区
$location['area'] // 所在区域

일반적으로 IP 위치를 얻으려면 국가 및 지역 정보만 가져오면 됩니다.

$info =  $location['country'].$location['area'];

IP 주소 라이브러리 파일인 경우 UTFWry .dat가 아닌 경우(Linux에서 파일 이름의 대소문자도 일관되어야 함) IpLocation 클래스를 인스턴스화할 때 주소 라이브러리 파일 이름을 전달해야 합니다. 예:

$Ip = new IpLocation('MyIpWry.dat'); // 传入IP地址库文件名

IP가 있는 경우 주소 라이브러리는 GBK로 인코딩되어 있습니다. 반환된 결과는 인코딩 및 변환되어야 합니다. 예:

$info = iconv('gbk','utf-8',$location['country'].$location['area']);

getlocation 메소드를 호출할 때 매개변수가 전달되지 않으면 시스템은 위의 get_client_ip 함수를 자동으로 호출하여 현재 IP 주소를 얻습니다.

$location = $Ip->getlocation();

또한 도메인 이름을 전달하여 자동으로 IP 주소를 얻는 것을 지원할 수도 있습니다. ip address

import('ORG.Net.IpLocation');// 导入IpLocation类
$Ip = new IpLocation(); // 实例化类
$area = $Ip->getlocation('www.thinkphp.cn'); // 获取域名服务器所在的位置
dump($area);

실행 결과 출력:

ThinkPHP가 IP 포지셔닝을 위해 UTFWry 주소 라이브러리를 사용하는 방법에 대해

순수한 IP 주소 라이브러리를 사용 중이거나 종종 다른 주소 라이브러리를 변경해야 하는 경우 IP 포지셔닝 쿼리를 용이하게 하기 위해 별도의 함수를 캡슐화하여 얻을 수도 있습니다. 위치 정보.

위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!

관련 권장 사항:

ThinkPHP CURD 방법의 테이블 방법 정보

THinkPHP의 클라이언트 IP 획득 방법 및 IP 주소 쿼리

위 내용은 ThinkPHP가 IP 포지셔닝을 위해 UTFWry 주소 라이브러리를 사용하는 방법에 대해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.