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 アドレスを長沙にジャンプする必要があります。複数の親操作が処理されました。知りたい場合は、次のエピソードをご覧ください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

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

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

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