DedeCMS自定义表单中添加验证码的方法

在用DedeCMS的时候,通过自定义表单来做在线留言,这个确实比织梦自带的留言簿模块要方便,虽然在以前余斗说过DedeCMS留言簿插件二次开发浅析,但是实现起来还是诸多bug。所以还是用Dede的自定义表单来实现比较靠谱,但是使用自定义表单之后,因为没有加验证码,导致一段时间内被人恶意攻击,填写了几千个留言,头都大了,只好去数据库中批量删除。此时之后,余斗就加深了这个验证码的认识,不论什么样的表单,一定要记得加上验证码。

今天,余斗就说说如何在DedeCMS的自定义表单中添加验证码,虽然在网上有很多教程,但是测试了大部分,发现都不适用,余斗还是自己研究一下,终于自己搞定。余斗测试的DedeCMS版本为DedeCMS V5.7 SP1,大家可以参考一下。

一、修改自定义表单控制文件

1.打开/plus/diy.php文件,在头部随意位置加上代码(网站开通了会员功能模块必加,没有开通会员功能则略过此步):

require_once(DEDEINC.
‘/membermodel.cls.php’);

 

2.加完上述代码之后,查找代码:

elseif($do ==
2)

        {

 

在下面加上代码:

  $svali = GetCkVdValue();

                 
if(preg_match(
“/1/”,$safe_gdopen)){

                         
if(strtolower($vdcode)!=$svali || $svali==
)

                          {

                                  ResetVdValue();

                                  ShowMsg(
‘验证码错误!’,
‘-1’);

                                  exit();

                          }

                    }

 

加上之后的代码:

修改之后保存文件并上传。

二、自定义表单模版页修改

1.引入jQuery文件(如果模版中已经引用了jQuery文件,则忽略此步。):

<script language=
“javascript” type=
“text/javascript” src=
“{dede:global.cfg_cmsurl/}/js/jquery.js”></script>

 

jQuery下载:jQuery.js文件

2.在需要插入验证码的地方加上代码:

<input id=
“vdcode” style=
“width: 50px; text-transform: uppercase;” type=
“text” name=
“vdcode”/>

<img id=
“vdimgck” style=
“cursor: pointer;” onclick=
“this.src=this.src+’?'” src=
“/include/vdimgck.php” align=
“absmiddle”/>

 

3.添加判断验证码正确的js代码带模版底部或头部:

<script type=
“text/javascript”>
// <![CDATA[

$ = jQuery;

function changeAuthCode() {

var num =
new Date().getTime();

var rand = Math.round(Math.random() *
10000);

num = num + rand;

$(
‘#ver_code’).css(
‘visibility’,
‘visible’);


if ($(
“#vdimgck”)[
0]) {

$(
“#vdimgck”)[
0].src =
“../include/vdimgck.php?tag=” + num;

}


return false;

}

</script>

 

完成后,测试一下,效果如下图:

是不是完美实现了自定义表单中添加验证码功能?妈妈再也不怕我的网站被恶意提交表单了!