900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 网站如何实现自动根据IP跳转到当地地址 – PHP基础 – 前端 phpcms 更改favicon

网站如何实现自动根据IP跳转到当地地址 – PHP基础 – 前端 phpcms 更改favicon

时间:2022-03-02 06:42:18

相关推荐

网站如何实现自动根据IP跳转到当地地址 – PHP基础 – 前端 phpcms 更改favicon

PW自身就有根据IP判断所属地区的功能,只要经常更新IP库就没什么问题.至于根据归属地跳转到相应页面就需要你自己去写了。网上帮你找了一个,看是否合适。

。<?php

//返回当前IP的城市字符串

function convertip($ip) {

//IP数据文件路径

$dat_path = ‘QQWry.Dat’;

//检查IP地址

if(!preg_match(“/^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/”, $ip)) {

return ‘IP Address Error’;

}

//打开IP数据文件

if(!$fd = @fopen($dat_path, ‘rb’)){

return ‘IP date file not exists or access denied’;

}

//分解IP进行运算,得出整形数

$ip = explode(‘.’, $ip);

$ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];

//获取IP数据索引开始和结束位置

$DataBegin = fread($fd, 4);

$DataEnd = fread($fd, 4);

$ipbegin = implode(”, unpack(‘L’, $DataBegin));

if($ipbegin < 0) $ipbegin += pow(2, 32);

$ipend = implode(”, unpack(‘L’, $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 ‘System Error’;

}

//提取出来的数据转换成长整形,如果数据是负数则加上2的32次幂

$ip1num = implode(”, unpack(‘L’, $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 ‘System Error’;

}

$DataSeek = implode(”, unpack(‘L’, $DataSeek.chr(0)));

fseek($fd, $DataSeek);

$ipData2 = fread($fd, 4);

if(s

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。