ホームページ > バックエンド開発 > PHPチュートリアル > ThinkPHP は IP 測位に UTFWry アドレス ライブラリを使用します。 example_PHP チュートリアル

ThinkPHP は IP 測位に UTFWry アドレス ライブラリを使用します。 example_PHP チュートリアル

WBOY
リリース: 2016-07-13 10:34:53
オリジナル
897 人が閲覧しました

公式 Web サイトの http://www.thinkphp.cn/extend/223.html で IP ポジショニング拡張クラス ライブラリをダウンロードするか、拡張パッケージ (http://www.thinkphp.cn/down/253) をダウンロードできます。 .html) この拡張クラスはすでに組み込まれています。アップロードしたクラスライブラリを別途ダウンロードした場合は、解凍した 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 アドレスが不正な場合は 0.0.0.0 を返します。
必要に応じて、たとえば、IPV4 アドレス番号を返すこともできます:

コードをコピーします コードは次のとおりです:
$ip = get_client_ip(1);

返される結果は次のようになります:

コードをコピーします コードは次のとおりです:
2130706433

はアドレス範囲と比較に使用できます。

2. IP アドレスの測位
IP アドレスを取得するだけでは、アプリケーションのニーズを完全に満たすことはできません。IP アドレスの測位機能を使用すると、ユーザーの領域を取得できます。 IP ポジショニング機能を使用するには、IpLocation 拡張クラス ライブラリに加えて、IP アドレス ライブラリ ファイルも必要です。ThinkPHP はデフォルトで UTF8 エンコーディングを使用するため、UTF8 形式の IP アドレス ライブラリ ファイルを使用するのが最適です。純粋な gbk でエンコードされた IP アドレス ライブラリ ファイルの場合は、取得した結果に対してエンコード変換を実行する必要があります (後述)。UTF8 でエンコードされたアドレス ライブラリ ファイルは、http://www.thinkphp.cn/extend/270.html からダウンロードできます。
解凍されたアドレス ライブラリ ファイル IpLocation 拡張クラス ライブラリが配置されているディレクトリに UTFWry.dat を置くだけです。
使用方法:

コードをコピーします コードは次のとおりです:
import('ORG.Net.IpLocation') // IpLocation クラスをインポートします
$Ip = new IpLocation(); class
$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'] .$場所['エリア']
;

使用する 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);

操作結果の出力:

ThinkPHP は IP 測位に UTFWry アドレス ライブラリを使用します。 example_PHP チュートリアル

純粋な IP アドレス ライブラリを使用している場合、または IP 測位クエリを容易にするために別のアドレス ライブラリに変更する必要が頻繁にある場合は、位置情報を取得する別の関数をカプセル化することもできます。こちらを参照してください: http://www .thinkphp.cn /code/88.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/748160.html技術記事公式 Web サイトの http://www.thinkphp.cn/extend/223.html で IP ポジショニング拡張クラス ライブラリをダウンロードするか、拡張パッケージ (http://www.thinkphp.cn/down/253.html) をダウンロードできます。 html) これはすでに存在します この拡張クラスが含まれています...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート