在用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>
完成后,測試一下,效果如下圖:

是不是完美實現了自定義表單中添加驗證碼功能?媽媽再也不怕我的網站被惡意提交表單了!
聲明:本文文字、圖片等素材除標明原創外均采集于網絡,如有侵權,請及時告知我們,我們將在最短的時間內刪除。