DedeCMS限制自定义表单24小时只能提交一次的方法

最近公司站被人恶意提交表单,一个小时内疯狂提交了500个,因为做了DedeCMS自定义表单提交后发送指定QQ邮箱,当天手机被轰炸个不听,QQ邮箱一直在那提示消息,这也算是给我一个警示,一定要做个每个漏洞的修复。

今天余斗就来告诉大家如何设置每个IP24小时内只能提交一次表单:

打开/plus/diy.php文件,在里面找到如下代码(大概在第51行):


if(!is_array($diyform))

                {

                        showmsg(
‘自定义表单不存在’,
‘-1’);

                        exit();

                }

在下面加上代码:

 
//检测游客是否已经提交过表单

               
if(isset($_COOKIE[
‘VOTE_MEMBER_IP’]))

                {

                       
if($_COOKIE[
‘VOTE_MEMBER_IP’] == $_SERVER[
‘REMOTE_ADDR’])

                        {

                                ShowMsg(
‘您已经填写过表单啦’,
‘-1’);

                                exit();

                        }
else {

                                setcookie(
‘VOTE_MEMBER_IP’,$_SERVER[
‘REMOTE_ADDR’],time()*$row[
‘spec’]*
3600,
‘/’);

                        }

                }
else {

                        setcookie(
‘VOTE_MEMBER_IP’,$_SERVER[
‘REMOTE_ADDR’],time()*$row[
‘spec’]*
3600,
‘/’);

                }

再到前台测试,会发现提交一次表单后,再提交就会提示:

当然,因为此方法是通过验证cookie的方式防止用户重复提交,如果用户清除cookie的话还是可以提交的,算是暂时性的解决了余斗的问题。