被恶意提交,防止恶意提交,最有效的方法是:DeDeBIZ织梦自定义表单添加访客提交时间和访客IP+限制每天每个IP提交表单次数。

上一篇《DeDeBIZ自定义表单提示数据校验不对的解决办法》织梦教程中,彻底解决了数据校验不对。在这篇织梦教程中,我将教大家实现拦截垃圾留言,限制IP提交次数,防止用户恶意提交操作。还是那句话,废话少说,直接上教程吧。

一、教程开始

1、给表单添加提交时间和IP地址。

1.1、后台 - 模型管理 - 自定义表单管理 - 修改 - 添加新字段

字段名称:提交时间
字段标识:time
数据类型:单行文本(varchar)

1.2、后台 - 模型管理 - 自定义表单管理 - 修改 - 添加新字段

字段名称:IP地址
字段标识:ip
数据类型:单行文本(varchar)

2、打开 /apps/diy.php 搜索

$fieldarr = explode(';', $dede_fields);

在它下面加入

$time = GetDateTimeMk(time());
$ip = GetIP();

这样改了以后,前台表单中可以不用出现提交时间和IP地址的输入框。

二、调用标签:举个例子,代码如下

<form name="addcontent" action="/apps/diy.php" method="post" enctype="multipart/form-data">
  <input type="hidden" name="action" value="post">
  <input type="hidden" name="diyid" value="1">
  <input type="hidden" name="do" value="2">
  <table class="table mb-0">
    <tr>
      <td>姓名</td>
      <td colspan="3"><input type='text' name='xingming' id='xingming' class='form-control admin-input-lg' value=''>
      </td>
    </tr>
    <tr>
      <td>电话</td>
      <td colspan="3"><input type='text' name='dianhua' id='dianhua' class='form-control admin-input-lg' value=''>
      </td>
    </tr>
    <tr>
      <td align="center"><button type="submit" name="submit" class="btn btn-success btn-sm">提交</button>
        <button type="reset" name="reset" class="btn btn-outline-success btn-sm">重置</button></td>
    </tr>
  </table>
</form>

看上面的表单,没有 dede_fields 和 dede_fieldshash 这种小尾巴。所以,你的前端表单代码,是可以不用修改的,但前提是:提示数据校验不对的解决办法。

三、限制每个IP每天只能提交自定义表单3次

前提是要有上面添加的IP和提交时间哦,而且要注意你的字段名 time 和 ip,要与下面的教程一致。打开 /apps/diy.php 搜索

if ($dsql->ExecuteNoneQuery($query)) {

在它的上面加入

$aaa = $dsql->getOne("SELECT count(*) AS dd FROM `{$diy->table}` WHERE ip='{$ip}' AND date_format(time,'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')");
if($aaa['dd'] >= 3)
{
	showmsg('明天再来!', '-1');
	exit();
}

注意上面的 ip='{$ip}' AND date_format(time,'%Y-%m-%d')

ip 和 time 这2个字段可以改成你自己的,但上面添加的字段都必须全部改

四、限制10秒后才能继续提交

打开 /apps/diy.php 搜索

if ($dsql->ExecuteNoneQuery($query)) {

在它的上面加入

$bbb = $dsql->getOne("SELECT * FROM `{$diy->table}` WHERE ip='{$ip}' order by id desc limit 0,1");
if(!empty($bbb['time']) && (GetMkTime($bbb['time']) + 10) > time())
{
    ShowMsg('请稍后10秒再试!','-1');
    exit();
}

这个与 限制每个IP每天只能提交自定义表单3次 不会冲突。

温馨提示

内容由用户共同创建和维护,并不代表织梦爱好者论坛立场!
建议您独自对内容进行评估,核实并咨询相关的专业人士!

DeDeBIZ自定义表单添加访客提交时间和访客IP+限制每天每个IP提交表单次数DeDeBIZ自定义表单添加访客提交时间和访客IP+限制每天每个IP提交表单次数DeDeBIZ自定义表单添加访客提交时间和访客IP+限制每天每个IP提交表单次数DeDeBIZ自定义表单添加访客提交时间和访客IP+限制每天每个IP提交表单次数DeDeBIZ自定义表单添加访客提交时间和访客IP+限制每天每个IP提交表单次数+29  29 个回复 | 最后更新于 2025-01-19
该部分是隐藏区

登录后查看回复

该部分是隐藏区

登录后方可回帖

Loading...