| 名称 | IP白名单 |
| 版本号 | V1.0 |
| 应用编号 | APP921 |
| 应用类型 | 插件 |
| 发布时间 | 2022-02-21 14:28:41 |
| 更新时间 | 2022-04-01 15:19:23 |
| 支持内核 | CodeIgniter |
| 插件类型 | 工具类 |
| 功能类别 | 工具 安全 |
| 依赖场景 | 不依赖于任何插件 |
| 源码加密 | 未加密 |
| 技术保障 | 第三方服务商 |
| 技术要求 | 需要掌握PHP、SQL、HTML、CSS、JS技术 |
| 支持浏览器 | Chromium内核浏览器、Chrome、Edge、Firefox、Safari、Opera等 |
功能介绍
安装后通过设置ip白名单实现只允许指定IP访问后台。
IP设置错误后可以通过访问:http://域名/index.php?s=iplist&c=home自动授权当前IP。
实现原理:通过后台登陆之前钩子来实现IP限制。
使用方法:后台下载安装后把下面的代码添加到自定义钩子文件(/config/hooks.php)中
\Phpcmf\Hooks::on('admin_login_before', function($post) {
$cz = \Phpcmf\Service::M()->db->tableExists(\Phpcmf\Service::M()->dbprefix('iplist'));
if($cz){
$rts = \Phpcmf\Service::M()->db->table('iplist')->where('status', 2)->countAllResults();
if($rts==0){
}else{
if (getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");
else $ip = "Unknow";
$rt = \Phpcmf\Service::M()->db->table("iplist")->where("status", "2")->select("ip")->get();
if ($rt) {
$rows = $rt->getResultArray();
foreach ($rows as $t) {
$array[] = $t['ip'];
}
}
$iplists = $array;
$ALLOWED_IP=$iplists;
#$ALLOWED_IP=array('113.128.218.*','192.168.*.*');
//允许访问的ip
$check_ip_arr= explode('.',$ip);
//ip参数拆分成数组
if(!in_array($ip,$ALLOWED_IP)) {
$bl=false;
foreach ($ALLOWED_IP as $val){
if(strpos($val,'*')!==false){
//发现有*号替代符
$arr=array();
$arr=explode('.', $val);
$bl=true;
//用于记录循环检测中是否有匹配成功的
for ($i=0;$i<4;$i++){
if($arr[$i]!='*'){
//不等于* 就要进来检测,如果为*符号替代符就不检查
if($arr[$i]!=$check_ip_arr[$i]){
$bl=false;
break;
//终止检查本个ip 继续检查下一个ip
}
}
}
//end for
if($bl){
//如果是true则终止匹配
break;
}
}
}
//end foreach
if(!$bl){
$return=array(
'status'=>0,
'msg'=>$ip.'无权限访问',
'data'=>$iplists
);
echo json_encode($return);
exit();
}
}
}
}
});


提交工单
提交工单方式
进入平台:https://www.xunruicms.com/post.html?app=921