《DeDeBIZ织梦自定义表单添加访客提交时间和访客IP+限制每天每个IP提交表单次数》和《DeDeBIZ自定义表单添加验证码的办法》都不管用?这是前置条件,在这种情况下,限制IP不管用?提交泛滥、它们是随机的IP?那下面,还有办法,我将教大家。
前置条件:把《限制每天每个IP提交表单次数》先做了。
解决方案:根据IP所在地,来限制IP提交。
负面影响:这样限制的话,很有可能会被误杀。
教程开始
1、给表单添加提交IP所在地。
1.1、后台 - 模型管理 - 自定义表单管理 - 修改 - 添加新字段
字段名称:IP归属地 字段标识:ipadizhi 数据类型:单行文本(varchar)
1.2、后台 - 模型管理 - 自定义表单管理 - 修改 - 添加新字段
字段名称:IP运营商 字段标识:ipaguish 数据类型:单行文本(varchar)
注意:添加的这两个,主要是查询IP的所在地和运营商。
2、打开 /apps/diy.php 搜索
if ($action == 'post') {
在它下面加入
require_once('ipkuclass.php');
附件下载
将 IP 文件夹内的 ipkuclass.php 和 ipkuclass2.dat 剪切到 apps 目录内。
继续搜索
$fieldarr = explode(';', $dede_fields);
在它下面加入
$ipku = new IPQuery(); $addr = $ipku->query($ip); $ipadizhi = $addr['pos']; $ipaguish = $addr['isp'];
第三方IP库容易失效,在孟坤博客整的纯真本地IP库查询。
添加完成后,你的代码,应该如下所示
$time = GetDateTimeMk(time()); $ip = GetIP(); $ipku = new IPQuery(); $addr = $ipku->query($ip); $ipadizhi = $addr['pos']; $ipaguish = $addr['isp'];
6行代码哈,不会搞错的吧。
3、根据IP所在地查询,限制每日只能提交三次。
打开 /apps/diy.php 搜索
if ($dsql->ExecuteNoneQuery($query)) {
在它上面加入
$ccc = $dsql->getOne("SELECT count(*) AS mus FROM `{$diy->table}` WHERE ipadizhi='{$ipadizhi}' AND date_format(time,'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')"); if($ccc['mus'] >= 3) { showmsg('明天再来!', '-1'); exit(); }
特别注意:这个是根据所在地查询,与同IP地址提交不一样。比如:都是北京市的,均是北京市的,所有北京市的人,每天只有3条提交次数。
+33 33 个回复 | 最后更新于 2025-01-16
登录后方可回帖