Home CMS Tutorial Empire CMS In-depth knowledge of how Empire CMS jumps to different pages based on IP address

In-depth knowledge of how Empire CMS jumps to different pages based on IP address

Nov 29, 2019 pm 01:26 PM
Empire cms

In-depth knowledge of how Empire CMS jumps to different pages based on IP address

The example in this article describes how Empire CMS jumps to different pages based on IP. Share it with everyone for your reference.

The specific implementation code is as follows:

The code is as follows:

<?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;
?>
Copy after login

Recommended to study "Empire cms tutorial"

Above After the method obtains the client IP address, it then passes in the convertip function to convert it into a real address. The convertip($ip) function code is as follows:

The code is as follows:

//===================================
// 功能: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;
}
?>
Copy after login

When used, pass convertip The function obtains the real address based on the IP address, and then implements the jump function through the following js code:

The code is as follows:

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/?广东";
}
Copy after login

I hope this article will be helpful to everyone’s Imperial CMS website building .

The above is the detailed content of In-depth knowledge of how Empire CMS jumps to different pages based on IP address. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Where are the settings for the mobile version of Empire CMS? Where are the settings for the mobile version of Empire CMS? Apr 17, 2024 pm 12:12 PM

The mobile settings of Empire CMS are located in the "Mobile Template" of the "Template Management" module. The specific steps include: enabling the template, selecting the application channel, editing the template content, and saving the settings.

Where is the imperial cms website map? Where is the imperial cms website map? Apr 17, 2024 am 10:48 AM

The Empire CMS sitemap can be found by accessing the config.inc.php file and checking the dositemap settings. If set to "on", sitemap is enabled. The sitemap path is located in the sitemapurl setting and can be accessed via a browser or downloaded via FTP.

Where can I put the empire cms template file for easy use? Where can I put the empire cms template file for easy use? Apr 17, 2024 am 07:22 AM

The ideal location for the Empire CMS template file is /e/template/default/skin/default/. Secondly, it can also be placed in /e/data/skins/ and /e/skin/. You need to pay attention to maintaining the folder structure and setting file permissions. and regular backups.

Where to find the empire cms database configuration file Where to find the empire cms database configuration file Apr 17, 2024 am 06:42 AM

The Imperial CMS database configuration file is located in the website root directory e/config/db.inc.php. It contains the following configuration information: $dbhost: database server address $dbuser: database user name $dbpass: database password $dbname: database name $dbport :Database port $dbcharset: Database character set

Where is the imperial cms resource network template? Where is the imperial cms resource network template? Apr 17, 2024 am 10:00 AM

Empire CMS template download location: Official template download: https://www.phome.net/template/ Third-party template website: https://www.dedecms.com/diy/https://www.0978.com.cn /https://www.jiaocheng.com/Installation method: Download template Unzip template Upload template Select template

Where is the automatic publishing interface of Empire CMS? Where is the automatic publishing interface of Empire CMS? Apr 17, 2024 am 09:03 AM

The automatic publishing interface of Empire CMS is located at /e/api/web/postinfo.php. The usage steps are as follows: visit /e/api/web/postinfo.php address and use HTTP POST to submit the article title, column ID, category ID, author and article The content and other data interfaces will return a response in JSON format, which contains the publishing results and article ID.

Where is the Baidu active push plug-in for Imperial CMS? Where is the Baidu active push plug-in for Imperial CMS? Apr 17, 2024 am 11:00 AM

The imperial cms Baidu active push plug-in is located in the root directory /e/api/baidu/push.php. The specific configuration steps are as follows: 1. Upload the plug-in file to the specified path. 2. Configure the "Baidu Active Push" option in the Imperial CMS background, including push address, API Key and push interval. 3. Get Baidu push information: Push address: https://data.zz.baidu.com/urls?site=YOUR_SITE&token=YOUR_API_KEY, API Key: log in to Baidu search resource platform to obtain. 4. Update the API Key regularly and set a reasonable push interval.

Is empire cms free? Is empire cms free? Apr 17, 2024 am 11:24 AM

Yes, Empire CMS is a free and open source content management system (CMS). It is a lightweight CMS that is feature-rich and easy to use. Empire CMS is licensed under the GNU General Public License (GPL), which means it is free to download, install and use. For commercial use, it offers a paid version that offers additional features and support such as ad management, online payments, and premium technical support.

See all articles