WEB アプリケーションでは、IP アドレスに基づいて関連するアクセス ログを見つけて記録することも非常に一般的な要件です。ThinkPHP では、IP アドレスを簡単に取得して見つけることができます。
IP ポジショニング拡張クラスをダウンロードできます。公式 Web サイトのライブラリから入手するか、拡張クラスが既に含まれている拡張パッケージをダウンロードします。アップロードしたクラスライブラリを別途ダウンロードした場合は、解凍した IpLocation.class.php を ThinkPHP/Extend/Library/ORG/Net/ ディレクトリ下に配置します (存在しない場合は手動で作成してください)。
1. IP アドレスを取得する
ユーザーがアクセスした IP アドレスのみを取得する必要がある場合は、システムの組み込み get_client_ip 関数を直接使用します。 ThinkPHP 標準モードのメソッドであり、直接使用できます。これは、PHP の組み込みシステム変数 $_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 アドレスを自動的に取得します
import('ORG.Net.IpLocation');// 导入IpLocation类 $Ip = new IpLocation(); // 实例化类 $area = $Ip->getlocation('www.thinkphp.cn'); // 获取域名服务器所在的位置 dump($area);
実行結果出力:
純粋な IP アドレス ライブラリを使用している場合、または頻繁に変更する必要がある場合便宜上、さまざまなアドレス ライブラリを使用して、IP 測位クエリを別の関数にカプセル化し、位置情報を取得することもできます。
上記がこの記事の全内容です。その他の関連コンテンツについては、PHP 中国語 Web サイトをご覧ください。
関連する推奨事項:
ThinkPHP CURD メソッドのテーブル メソッドについて
THinkPHP はクライアント IP と IP アドレス クエリを取得します方法#####################
以上がThinkPHP が IP 測位に UTFWry アドレス ライブラリを使用する方法についての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。