上海网站建设公司

服务热线:173-210-28610

QQ客服:上海网站设计 上海网站建设

最新动态:
关注我们:关注腾讯微博 关注新浪微博 关注QQ空间 关注微信

帮助中心

你的位置:主页>>行业新闻>>帮助中心>

dede自定义表单提交时间间隔限制处理办法

时间:2015-05-05 22:45作者:上海网站建设来源:上海网站建设浏览:分享按钮
:dede的自定义表单功能很强大,可是也存在一些不足,如笔者的网站就遭受恶意攻击者连续不间断提交代码信息,有一次居然连续提交2000多个信息,因此有必要采取措施限制恶意提交,最好的方法就是让提交者提交时间间隔限制,现对dedecms的代码进行如下修改即可完

dede的自定义表单功能很强大,可是也存在一些不足,如笔者的网站就遭受恶意攻击者连续不间断提交代码信息,有一次居然连续提交2000多个信息,因此有必要采取措施限制恶意提交,最好的方法就是让提交者提交时间间隔限制,现对dedecms的代码进行如下修改即可完成拒绝恶意提交:

打开plus下diy.php文件

找到如下代码

if(!is_array($diyform))
       {
           showmsg('自定义表单不存在', '-1');
           exit();
       }


再其下添加

//检测游客是否已经提交过表单 by  团儿
        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,'/');
        }

此处代码即可限制一个用户一天只能提交一次表单,要修改限制时间, 将3600设置成你想要的时间间隔即可。

另外有时候还需要记录恶意提交者的ip,这时候可以再进行如下修改:

1.首先修改plus/diy.php

if($fieldinfo[1] == 'textdata'){${$fieldinfo[0]} = FilterSearch(stripslashes(${$fieldinfo[0]}));${$fieldinfo[0]} = addslashes(${$fieldinfo[0]});}

后面添加如下代码:

if($fieldinfo[0] == 'ip'){${$fieldinfo[0]}=GetIP();}if($fieldinfo[0] == 'time'){${$fieldinfo[0]}=date("Y-m-d H:i:s");}
if($fieldinfo[0] == 'laiyuanyemian')
{
${$fieldinfo[0]}=curPageURL();
}

2.在plus/diy.php上方添加以下代码,如果要获取来源地址的话

<?php
// 说明:获取完整URL
function curPageURL()
{
    $pageURL = 'http';
    if ($_SERVER["HTTPS"] == "on")
    {
        $pageURL .= "s";
    }
    $pageURL .= "://";
    if ($_SERVER["SERVER_PORT"] != "80")
    {
        $pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
    }
    else
    {
        $pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
    }
    return $pageURL;
}
?>

最后一步:

在自定义字段里添加字段
IP地址:ip
提交时间:time

(字段名称一定要和diy.php添加的字段名一致)

在表单中调取<input name="ip" id="ip" value="" type="hidden"><input name="time" id="time" value="" type="hidden">
type='hidden' 为隐藏字段,在前端不显示,用户提交后台会自动获取IP和时间。

dede自定义表单提交时间间隔限制处理办法由上海微帮网络工作室原创编辑,转发请注明来源及版权所属。
建站服务热线:186-211-83091 OR 181-212-93230你也可以点击在线咨询让我们了解你建站的需求
继续浏览有关建站指南自定义表单的文章
我需要一个网站独立的设计团队 带给您全新的视觉体验
行业解决方案为上千家各行各业的公司解决了实际中的问题
客户成功案例查看我们客户的案例让你更加了解我们

栏目导航

Navigation

快速搜索

Search
我有其他要求