之前做了一个关于限制用户查看帖子的功能,今天有群友提到网站被小偷程序采集生成静态文件做成镜像站点的问题,便提到了让他封ip实现,后来他说到很多是国外的ip地址,所以问到能不能按地区限制访问,故做此组件功能。 作用详解:根据设置的地区黑名单限制访问,同时提供了多种白名单排除方式以达到排除在限制地区内的部分地区的作用。 设置说明:先判断是否在地区黑名单中,如果不在就不作访问限制,如果在黑名单中再判断是否在各种白名单中(如果在任一白名单中即不限制访问),如果不在就限制访问。 限制访问:如果限制用户访问,可以设置是跳转到指定的提示页面,或是直接设置提示文字。 后台设置图 组件名称:全局 限制地区访问 组件变量:common@yz_stopadress 手机嵌入:否 组件类型:代码(code) 模板内容: {hookinput:stopadressset,<b>限制地区访问</b>,<font color="red">限制指地区访问</font>,先判断是否在黑名单中,如果在再判断白名单,否则不作限制,hidden,https://yuzhe.liyiyi.name/library/item-251.html}{/hookinput} {hookinput:stopadressblack,地区黑名单,<br>填写限制访问网站的地区名列表,一行一个,模糊匹配,textarea}四川{/hookinput} {hookinput:stopadresswrite,地区白名单,<br>此处设置的地区将不受黑名单限制,一行一个,模糊匹配,textarea}{/hookinput} {hookinput:stopadressgroups,会员组白名单,选择的会员组将不受地区列表限制,groups}{/hookinput} {hookinput:stopadressrobot,搜索引擎,限制搜引擎,select,0=不限制|1=限制}0{/hookinput} {hookinput:stopadresstype,处理方式,黑名单访问时的处理方式,select,1=跳转页面|0=提示文字}0{/hookinput} {hookinput:stopadressurl,跳转页面,设置黑名单访问时跳转的地址,仅【处理方式】设置为 <font color="red">跳转页面</font> 时有效,text}{/hookinput} {hookinput:stopadressmsg,提示文字,<br>设置黑名单访问时提示的文字,仅【处理方式】设置为 <font color="green">提示文字</font> 时有效,不能使用英文冒号,可用标签{clientadress}-访问者地区,textarea}你所在的地区 <font color="red">{clientadress}</font> 无权访问本站!{/hookinput} $stopadressblack = trim('{hookvalue:stopadressblack:php}'); $stopadresswrite = trim('{hookvalue:stopadresswrite:php}'); $stopadressgroups = trim('{hookvalue:stopadressgroups:php}'); $stopadressrobot = intval('{hookvalue:stopadressrobot:php}'); $stopadresstype = intval('{hookvalue:stopadresstype:php}'); $stopadressurl = trim('{hookvalue:stopadressurl:php}'); $stopadressmsg = trim('{hookvalue:stopadressmsg:php}'); $stopadresscut = "\n"; if ($stopadressblack && (!IS_ROBOT || IS_ROBOT && $stopadressrobot) && !(CURSCRIPT == 'forum' && CURMODULE == 'modcp')){ require_once libfile('function/misc'); $clientadress = str_replace(array('-', ' '), '', convertip($_G['clientip'])); if ($clientadress){ $arrstopadress = explode($stopadresscut, $stopadressblack); foreach ($arrstopadress as $stopadress) { if (strpos($clientadress, $stopadress) !== FALSE){ $isstop = 1; break; } } if ($isstop && $stopadresswrite){ $arrstopadress = explode($stopadresscut, $stopadresswrite); foreach ($arrstopadress as $stopadress) { if (strpos($clientadress, $stopadress) !== FALSE){ $isstop = 0; break; } } } if ($isstop && $stopadressgroups){ $isstop = !in_array($_G['groupid'], explode(',', $stopadressgroups)); } if ($isstop){ if ($stopadresstype && $stopadressurl){ showmessage('', $stopadressurl, array(), array('header' => true)); }elseif ($stopadressmsg){ showmessage(str_replace(array(':', '{clientadress}'), array('', $clientadress), $stopadressmsg)); } } } } // && !(CURSCRIPT == 'forum' && CURMODULE == 'modcp') 是因为系统程序在论坛管理面板中使用require libfile('function/misc');载入而冲突,所以屏蔽论坛管理面板 |
插件介绍:雨哲超强嵌入点 插件是一款平台插件,通过后台添加在前台显示(基于模板的hook位置)指定内容的功能。
GMT+8, 2024-5-20 18:53 , Processed in 0.056349 second(s), 9 queries , Xcache On.
Powered by Discuz! X3.2
© 2001-2013 Comsenz Inc.