検索
ホームページphp教程php手册PHP で IP アドレスに基づいて都市を決定し、都市切り替えまたはジャンプ コードを実装します。

IP アドレスを取得

コードをコピー コードは次のとおりです。


function GetIP() {
if ($_SERVER["HTTP_X_FORWARDED_FOR"])
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
else if ($_SERVER["HTTP_CLIENT_IP"])
$ip = $_SERVER[ "HTTP_CLIENT _IP" ];
else if ($_SERVER["REMOTE_ADDR"])
$ip = $_SERVER["REMOTE_ADDR"];
else if (getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv ("HTTP_X_FORWARDED_FOR");
else if (getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");
else
$ip = "Unknown";
return $ip;
}
echo GetIP();
?> ;


方法 2

コードをコピー コードは次のとおりです。


function getip ( )
{
🎜> $ip = getenv('http_x_forwarded_for );
$ip = $_server['remote_addr'] 最新の IP アドレス データベース: http://www.jb51.net/softs/10529.html
使用方法: 解凍後、QQWry.Dat が必要な IP アドレス データベースになります。新しい ipcity を作成します。フォルダを指定して配置します。 以下にデータベースを配置します。 QQ IP データベースは非常に使いやすく、データは非常に完成していますので、公式の更新に遅れずに従うことができ、データを最新の状態に保つことができます。
次に、新しい ipaddress.php を作成します。上記の ipcity ディレクトリにあるファイルを直接コピーして、次のコードを入力するだけです。重要な箇所もそれに応じてコメントされています。セクション B:



コードをコピー

コードは次のとおりです:



/*
関数名: ipCity
パラメータの説明: $userip—ユーザー IP アドレス
関数: PHP は、 IP アドレス
author:lee
contact:xpsem2010@gmail.com
*/
function ipCity($userip) {
//IP データベース パス、QQ IP データベースの純粋なバージョン 20110405ここで使用します
$dat_path = 'QQWry.dat';
//IP アドレスが有効かどうかを判断します
if(!ereg("^([0-9]{1,3}.){ 3}[0-9 | , 'rb')){
Return 'IP データ ファイルが存在しないか、アクセスが拒否されました' ('.', $userip);
$useripNum = $userip[0] * 16777216 $userip[1] * 65536 $userip[2] * 256 $userip[3];
//IP アドレスのインデックス開始位置と終了位置を取得
$DataBegin = fread($fd, 4);
$DataEnd = fread($fd, 4);
$useripbegin = implode('', unpack('L', $DataBegin));
if($useripbegin $useripend = implode('', unpack('L', $DataEnd));
if($useripend $useripAllNum = ($useripend - $useripbegin) / 7 1;
$BeginNum = 0;
$EndNum = $useripAllNum;
//二分検索メソッドを使用して、インデックスから一致する IP アドレス レコードを検索しますrecords
while($userip1num>$useripNum || $userip2num $Middle= intval((( $EndNum $BeginNum) / 2);
// インデックスへのポインタをオフセットします位置を決めて 4 バイトを読み取ります
fseek($fd, $useripbegin 7 * $Middle);
$useripData1 = fread( $fd, 4);
If(strlen($useripData1) fclose($fd);
データが負の数の場合は、2 の 32 乗を加算します。
$userip1num = implode('', unpack('L) ', $useripData1));
if($userip1num //抽出された長整数が IP アドレスより大きい場合、終了位置を変更します次のサイクル
if($ userip1num> $ useripnum){
$ endnum = $ middle;
($ dataseek)< > fseek($fd, $DataSeek);
$useripData2 = fread($fd, 4);
if(strlen($useripData2) fclose($fd);
$userip2num = implode('', unpack('L', $useripData2));
if($userip2num //找不到IP地址对应城市
if($userip2num if($Middle == $BeginNum) {
fclose($fd);
return 'データなし';
}
$BeginNum = $Middle;
}
}
$useripFlag = fread($fd, 1);
if($useripFlag == chr(1) )) {
$useripSeek = fread($fd, 3);
if(strlen($useripSeek) fclose($fd);
return 'システム エラー';
}
$useripSeek = implode('', unpack('L', $useripSeek.chr(0)));
fseek($fd, $useripSeek);
$useripFlag = fread($fd, 1);
}
if($useripFlag == chr(2)) {
$AddrSeek = fread($fd, 3);
if(strlen($AddrSeek) fclose($fd);
return 'システム エラー';
}
$useripFlag = fread($fd, 1);
if($useripFlag == (2) ) {
$AddrSeek2 = fread($fd, 3);
if(strlen($AddrSeek2) fclose($fd);
return 'システムエラー';
}
$AddrSeek2 = implode('', unpack('L', 2.chr(0)) );
fseek($fd, $AddrSeek2);
} else {
fseek($fd, -1, SEEK_CUR);
}
while(($char = f読み取り($ fd, 1)) != chr(0))
$useripAddr2 .= $char;
$AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));
fseek($fd, $AddrSeek);
while(($char = fread($fd, 1)) != chr(0))
$useripAddr1 .= $char;
} else {
fseek($fd, -1, SEEK_CUR);
while(($char = fread($fd, 1)) != chr(0))
$useripAddr1 .= $char;
$useripFlag = fread($fd, 1);
if($useripFlag == chr(2)) {
$AddrSeek2 = fread($fd, 3);
if(strlen($ AddrSeek2) fclose($fd);
return 'システム エラー';
}
$AddrSeek2 = implode('', unpack( 'L'、$AddrSeek2.chr (0)));
fseek($fd, $AddrSeek2);
}else {
.= $char;
}
}
fclose($fd);
//都市を返すIP アドレスに対応する結果
if(preg_match('/ http/i', $useripAddr2 )) {
$useripAddr2 = '';
}
$useripAddr = "$useripAddr1 $useripAddr2";
$useripAddr = preg_replace('/CZ88.Net/ is', '', $ useripaddr);
$useripaddr = preg_replace('/^s*/is', '', $useripaddr);
$useripaddr = preg_replace('/s*$/is' , '', $useripaddr) ;
if(preg_match('/http/i', $useripaddr) || $useripaddr == '') {
$useripaddr = 'データなし';
}
$useripaddr を返す >セクション C は次のとおりです。
// 指定されたページ js にジャンプして、IP アドレスに基づいて都市を取得します



コードをコピーします

コードは次のとおりです次のように:


var city='';

//IP に基づいて指定されたページにジャンプしますすべての都市のアドレス

コードをコピーします


コードは次のとおりです:


if(city.indexOf("Shanghai City" )>=0){
window.location.href=" http://shanghai.demo.com/";

}先頭のAセグメントコードと、上記の C セグメント コードを B セグメント コードの先頭と末尾にそれぞれ追加し、リダイレクトする必要があるページに次のコードを追加します。


コードをコピー

コードは次のとおりです。



ページを更新すると、期待した効果が得られますか? 上記のコードは単純に IP アドレスを決定し、このようなことが起こった場合、湖南省のすべての IP アドレスを長沙にジャンプする必要があります。複数の親操作が処理されました。知りたい場合は、次のエピソードをご覧ください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。