POST TIME:2017-11-13 00:55
使用織夢(mèng)Dedecms自定義表單的時(shí)候,即使你做了字段的驗(yàn)證,也很有可能被人刷很多垃圾的內(nèi)容,更加安全的一個(gè)方法是為自定義表單添加上驗(yàn)證碼功能。今天我就來(lái)為大家分享一下怎樣給自定義表單添加驗(yàn)證碼!
首先登錄網(wǎng)站后臺(tái),找到你自定義表單的管理(修改)頁(yè)面,你會(huì)看到表單發(fā)布時(shí)調(diào)用的模板,如下圖:
這個(gè)模板位于 /templets/plus/ 目錄下,我們打開相應(yīng)的模板,在
<?php echo $postform; ?>
之后,</table>之前加入如下代碼:
<tr> <td align="right" valign="top">驗(yàn)證碼:</td> <td><input id="vdcode" type="text" name="validate" style="text-transform:uppercase;"/><img id="vdimgck" align="absmiddle" onClick="this.src=this.src+'?'" style="cursor: pointer;" alt="看不清?點(diǎn)擊更換" src="../include/vdimgck.php"/> </td> </tr>
保存。
然后刷新一下表單提交頁(yè)面看看,是不是已經(jīng)出現(xiàn)了驗(yàn)證碼?
下面我們要做的就是對(duì)驗(yàn)證碼進(jìn)行驗(yàn)證。打開 /puls/diy.php 頁(yè)面,在elseif($do == 2){ 里添加如下代碼(一定要位于這個(gè)大括號(hào)里的最前面):
elseif($do == 2)
{
$validate = empty($validate) ? '' : strtolower(trim($validate));
$svali = strtolower(GetCkVdValue());
$backurl = 'diy.php?action=post&diyid=1'; //這里換成你表單的地址
if($validate=='' || $validate != $svali){
ResetVdValue();
ShowMsg('驗(yàn)證碼不正確!',$backurl,0,1000);
exit;
}保存即可。再次刷新一下表單,提交測(cè)試下~~
提示:1. 把代碼加到 diy.php 中,你所有的自定義表單模板都需要加上驗(yàn)證碼,沒(méi)加的會(huì)提示“驗(yàn)證碼不正確”;當(dāng)然,你也可以根據(jù) $diyid 來(lái)設(shè)置是否進(jìn)行驗(yàn)證碼校驗(yàn)。2. 第二段代碼中的 $backurl 可以直接寫成 -1,這時(shí)候必須把ResetVdValue(); 去掉,否則會(huì)一直提示“驗(yàn)證碼不正確”,因?yàn)?$backurl 寫成 -1 時(shí),表單返回上一個(gè)頁(yè)面,驗(yàn)證碼圖片并沒(méi)有刷新,而ResetVdValue(); 又會(huì)把已保存的驗(yàn)證碼值清空,導(dǎo)致校驗(yàn)失敗。