ホームページ CMS チュートリアル エンパイアCMS Empire CMS が IP アドレスに基づいて異なるページにジャンプする方法に関する深い知識

Empire CMS が IP アドレスに基づいて異なるページにジャンプする方法に関する深い知識

Nov 29, 2019 pm 01:26 PM
エンパイアのCM

Empire CMS が IP アドレスに基づいて異なるページにジャンプする方法に関する深い知識

この記事の例では、Empire CMS が IP に基づいて異なるページにジャンプする方法について説明します。皆さんの参考に共有してください。

具体的な実装コードは次のとおりです:

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

<?php
//php获取ip的算法
$user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"];
$user_IP = ($user_IP) ? $user_IP : $_SERVER["REMOTE_ADDR"];
//echo $user_IP;
?>
ログイン後にコピー

Empire cms チュートリアル 」を学習することをお勧めします。

上記 メソッドはクライアント IP アドレスを取得した後、convertip 関数に渡して実際のアドレスに変換します。convertip($ip) 関数のコードは次のとおりです:

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

//===================================
// 功能:IP地址获取真实地址函数
// 参数:$ip - IP地址
//===================================
function convertip($ip) {
//IP数据文件路径
$dat_path = &#39;QQWry.dat&#39;;
//检查IP地址
if(!ereg("^([0-9]{1,3}.){3}[0-9]{1,3}$", $ip)){
return &#39;IP Address Error&#39;;
}
//打开IP数据文件
if(!$fd = @fopen($dat_path, &#39;rb&#39;)){
return &#39;IP date file not exists or access denied&#39;;
}
//分解IP进行运算,得出整形数
$ip = explode(&#39;.&#39;, $ip);
$ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];
//获取IP数据索引开始和结束位置
$DataBegin = fread($fd, 4);
$DataEnd = fread($fd, 4);
$ipbegin = implode(&#39;&#39;, unpack(&#39;L&#39;, $DataBegin));
if($ipbegin < 0) $ipbegin += pow(2, 32);
$ipend = implode(&#39;&#39;, unpack(&#39;L&#39;, $DataEnd));
if($ipend < 0) $ipend += pow(2, 32);
$ipAllNum = ($ipend - $ipbegin) / 7 + 1;
$BeginNum = 0;
$EndNum = $ipAllNum;
//使用二分查找法从索引记录中搜索匹配的IP记录
while($ip1num>$ipNum || $ip2num<$ipNum) {
$Middle= intval(($EndNum + $BeginNum) / 2);
//偏移指针到索引位置读取4个字节
fseek($fd, $ipbegin + 7 * $Middle);
$ipData1 = fread($fd, 4);
if(strlen($ipData1) < 4) {
fclose($fd);
return &#39;System Error&#39;;
}
//提取出来的数据转换成长整形,如果数据是负数则加上2的32次幂
$ip1num = implode(&#39;&#39;, unpack(&#39;L&#39;, $ipData1));
if($ip1num < 0) $ip1num += pow(2, 32);
//提取的长整型数大于我们IP地址则修改结束位置进行下一次循环
if($ip1num > $ipNum) {
$EndNum = $Middle;
continue;
}
//取完上一个索引后取下一个索引
$DataSeek = fread($fd, 3);
if(strlen($DataSeek) < 3) {
fclose($fd);
return &#39;System Error&#39;;
}
$DataSeek = implode(&#39;&#39;, unpack(&#39;L&#39;, $DataSeek.chr(0)));
fseek($fd, $DataSeek);
$ipData2 = fread($fd, 4);
if(strlen($ipData2) < 4) {
fclose($fd);
return &#39;System Error&#39;;
}
$ip2num = implode(&#39;&#39;, unpack(&#39;L&#39;, $ipData2));
if($ip2num < 0) $ip2num += pow(2, 32);
//没找到提示未知
if($ip2num < $ipNum) {
if($Middle == $BeginNum) {
fclose($fd);
return &#39;Unknown&#39;;
}
$BeginNum = $Middle;
}
}
//下面的代码读晕了,没读明白,有兴趣的慢慢读
$ipFlag = fread($fd, 1);
if($ipFlag == chr(1)) {
$ipSeek = fread($fd, 3);
if(strlen($ipSeek) < 3) {
fclose($fd);
return &#39;System Error&#39;;
}
$ipSeek = implode(&#39;&#39;, unpack(&#39;L&#39;, $ipSeek.chr(0)));
fseek($fd, $ipSeek);
$ipFlag = fread($fd, 1);
}
if($ipFlag == chr(2)) {
$AddrSeek = fread($fd, 3);
if(strlen($AddrSeek) < 3) {
fclose($fd);
return &#39;System Error&#39;;
}
$ipFlag = fread($fd, 1);
if($ipFlag == chr(2)) {
$AddrSeek2 = fread($fd, 3);
if(strlen($AddrSeek2) < 3) {
fclose($fd);
return &#39;System Error&#39;;
}
$AddrSeek2 = implode(&#39;&#39;, unpack(&#39;L&#39;, $AddrSeek2.chr(0)));
fseek($fd, $AddrSeek2);
} else {
fseek($fd, -1, SEEK_CUR);
}
while(($char = fread($fd, 1)) != chr(0))
$ipAddr2 .= $char;
$AddrSeek = implode(&#39;&#39;, unpack(&#39;L&#39;, $AddrSeek.chr(0)));
fseek($fd, $AddrSeek);
while(($char = fread($fd, 1)) != chr(0))
$ipAddr1 .= $char;
} else {
fseek($fd, -1, SEEK_CUR);
while(($char = fread($fd, 1)) != chr(0))
$ipAddr1 .= $char;
$ipFlag = fread($fd, 1);
if($ipFlag == chr(2)) {
$AddrSeek2 = fread($fd, 3);
if(strlen($AddrSeek2) < 3) {
fclose($fd);
return &#39;System Error&#39;;
}
$AddrSeek2 = implode(&#39;&#39;, unpack(&#39;L&#39;, $AddrSeek2.chr(0)));
fseek($fd, $AddrSeek2);
} else {
fseek($fd, -1, SEEK_CUR);
}
while(($char = fread($fd, 1)) != chr(0)){
$ipAddr2 .= $char;
}
}
fclose($fd);
//最后做相应的替换操作后返回结果
if(preg_match(&#39;/http/i&#39;, $ipAddr2)) {
$ipAddr2 = &#39;&#39;;
}
$ipaddr = "$ipAddr1 $ipAddr2";
$ipaddr = preg_replace(&#39;/CZ88.Net/is&#39;, &#39;&#39;, $ipaddr);
$ipaddr = preg_replace(&#39;/^s*/is&#39;, &#39;&#39;, $ipaddr);
$ipaddr = preg_replace(&#39;/s*$/is&#39;, &#39;&#39;, $ipaddr);
if(preg_match(&#39;/http/i&#39;, $ipaddr) || $ipaddr == &#39;&#39;) {
$ipaddr = &#39;Unknown&#39;;
}
return $ipaddr;
}
?>
ログイン後にコピー

使用する場合は、convertip を渡します。この関数は IP アドレスに基づいて実際のアドレスを取得し、次の JS コードを通じてジャンプ関数を実装します。
コードは次のとおりです:

var sf=&#39;&#39;;//此处的sf变量可保存PHP函数获取到的真实地址
if(sf.indexOf("香港")>=0){
window.location.href="http://www.****.com/?香港";
}
else if(sf.indexOf("广东省")>=0){
window.location.href="http://www.****.com/?广东";
}
ログイン後にコピー

この記事が皆様の Imperial CMS Web サイト構築に役立つことを願っています。

以上がEmpire CMS が IP アドレスに基づいて異なるページにジャンプする方法に関する深い知識の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Empire CMS のモバイル版の設定はどこにありますか? Empire CMS のモバイル版の設定はどこにありますか? Apr 17, 2024 pm 12:12 PM

Empire CMS のモバイル設定は、「テンプレート管理」モジュールの「モバイル テンプレート」にあります。具体的な手順には、テンプレートの有効化、アプリケーション チャネルの選択、テンプレート コンテンツの編集、設定の保存が含まれます。

帝国cmsウェブサイトの地図はどこにありますか? 帝国cmsウェブサイトの地図はどこにありますか? Apr 17, 2024 am 10:48 AM

Empire CMS サイトマップは、config.inc.php ファイルにアクセスし、dositemap 設定を確認することで見つけることができます。 「オン」に設定すると、サイトマップが有効になります。サイトマップのパスは sitemapurl 設定にあり、ブラウザ経由でアクセスするか、FTP 経由でダウンロードできます。

Empire cms テンプレート ファイルを簡単に使用できるようにどこに配置すればよいですか? Empire cms テンプレート ファイルを簡単に使用できるようにどこに配置すればよいですか? Apr 17, 2024 am 07:22 AM

Empire CMS テンプレート ファイルの理想的な場所は /e/template/default/skin/default/ です。次に、/e/data/skins/ および /e/skin/ に配置することもできます。フォルダー構造の維持、ファイルのアクセス許可の設定、および定期的なバックアップ。

Empire cms データベース構成ファイルの場所 Empire cms データベース構成ファイルの場所 Apr 17, 2024 am 06:42 AM

Imperial CMS データベース構成ファイルは、Web サイトのルート ディレクトリ e/config/db.inc.php にあり、次の構成情報が含まれています。 $dbhost: データベース サーバー アドレス $dbuser: データベース ユーザー名 $dbpass: データベース パスワード $dbname:データベース名 $dbport :データベースポート $dbcharset:データベース文字セット

Empire CMS の自動公開インターフェイスはどこにありますか? Empire CMS の自動公開インターフェイスはどこにありますか? Apr 17, 2024 am 09:03 AM

Empire CMS の自動公開インターフェイスは /e/api/web/postinfo.php にあります。使用手順は次のとおりです。/e/api/web/postinfo.php アドレスにアクセスし、HTTP POST を使用して記事のタイトルを送信します。列 ID、カテゴリ ID、著者および記事 コンテンツおよびその他のデータ インターフェイスは、公開結果と記事 ID を含む JSON 形式の応答を返します。

インペリアル cms リソース ネットワーク テンプレートはどこにありますか? インペリアル cms リソース ネットワーク テンプレートはどこにありますか? Apr 17, 2024 am 10:00 AM

Empire CMS テンプレートのダウンロード場所: 公式テンプレートのダウンロード: https://www.phome.net/template/ サードパーティのテンプレート Web サイト: https://www.dedecms.com/diy/https://www.0978.com。 cn /https://www.jiaocheng.com/インストール方法: テンプレートをダウンロード テンプレートを解凍 テンプレートをアップロード テンプレートを選択

Imperial CMS 用の Baidu アクティブ プッシュ プラグインはどこにありますか? Imperial CMS 用の Baidu アクティブ プッシュ プラグインはどこにありますか? Apr 17, 2024 am 11:00 AM

Imperial CMS Baidu アクティブ プッシュ プラグインは、ルート ディレクトリ /e/api/baidu/push.php にあります。具体的な設定手順は次のとおりです。 1. プラグイン ファイルを指定されたパスにアップロードします。 2. Imperial CMS バックグラウンドで、プッシュ アドレス、API キー、プッシュ間隔などの「Baidu アクティブ プッシュ」オプションを設定します。 3. Baidu プッシュ情報を取得します。プッシュ アドレス: https://data.zz.baidu.com/urls?site=YOUR_SITE&token=YOUR_API_KEY、API キー: Baidu 検索リソース プラットフォームにログインして取得します。 4. API キーを定期的に更新し、適切なプッシュ間隔を設定します。

エンパイアCMSは無料ですか? エンパイアCMSは無料ですか? Apr 17, 2024 am 11:24 AM

はい、Empire CMS は無料のオープンソースのコンテンツ管理システム (CMS) です。機能が豊富で使いやすい軽量の CMS です。 Empire CMS は GNU General Public License (GPL) に基づいてライセンスされており、無料でダウンロード、インストール、使用できます。商用利用の場合は、広告管理、オンライン支払い、プレミアム テクニカル サポートなどの追加機能とサポートを提供する有料バージョンが提供されます。

See all articles