主頁 > 網(wǎng)站建設(shè) > 建站知識 > 織夢自定義表單中添加驗證碼的方法和織夢自定

織夢自定義表單中添加驗證碼的方法和織夢自定

POST TIME:2017-11-12 23:55

織夢dedecms網(wǎng)站給自定義表單加dede模板自帶驗證碼的方法。

有時候,我們因為需要給dede網(wǎng)站的自定義表單添加驗證碼,防止惡意填寫表單提交。

我們可以用以下的方法來實現(xiàn):

首先,我們要找到/plus/diy.php這個文件

在頭部引入文件:

require_once(DEDEINC.'/membermodel.cls.php');

然后找到

elseif($do==2)

{在這個地方加入代碼塊

//驗證碼驗證

$svali=GetCkVdValue();

if(preg_match("/1/",$safe_gdopen)){

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

{

ResetVdValue();

ShowMsg('驗證碼錯誤!','-1');

exit();

}

}

修改好后保存一下文件。

第二步:在使用驗證碼的自定義表單靜態(tài)頁面中插入代碼塊

<inputtype="text"class="intxtw200"style="width:50px;text-transform:uppercase;"id="vdcode"name="vdcode"class="code"/>

<imgid="vdimgck"align="absmiddle"onclick="this.src=this.src+'?'"style="cursor:pointer;"alt="看不清?點擊更換"src="/include/vdimgck.php"/>看不清?<ahref="javascript:void(0)"onclick="changeAuthCode();">點擊更換</a>

在這個靜態(tài)頁面里還得引用JQuery

再加入JS代碼塊

<scripttype="text/javascript">
$=jQuery;
functionchangeAuthCode(){
varnum=newDate().getTime();
varrand=Math.round(Math.random()*10000);
num=num+rand;
$('#ver_code').css('visibility','visible');
if($("#vdimgck")[0]){
$("#vdimgck")[0].src="../include/vdimgck.php?tag="+num;
}
returnfalse;
}
</script>

好了,現(xiàn)在試一試,是不是可以實現(xiàn)驗證碼的提交了?一個簡單的dedecms自定義表單dede模板自帶驗證碼的功能就實現(xiàn)了。

織夢自定義表單的應(yīng)用非常方便,不管用在什么地方,收集信息特別方便制作和管理。

有如下幾個建議,把下拉框和單選按扭在后臺做成單行文本,這樣的話不管你提交的是下拉框或是單選,都可以有效的接收它的值。如果后臺就做成單選或下拉,如果改了默認值,提交的表單值跟后臺默認值對不上的話就會出現(xiàn)提交不成功的情況,就是前臺提交的時候選擇了,但后臺看不到數(shù)據(jù)。若是做成單行文本,提交的值就會以文本的形式寫入到后臺,表單修改值也更加顯得方便了。

提交之后會顯示織夢的默認提示信息“友情提示”幾秒過后就自動轉(zhuǎn)到首頁。如何才能讓提交的信息停留,并讓用戶確認所提交的信息。

我想了如下方式。給diy.php里提交成功后輸入固定值而不是自帶的跳轉(zhuǎn)方法。如下:

if($action == 'post')
{
if(empty($do))
{
$postform = $diy->getForm(true);
include DEDEROOT."/templets/plus/{$diy->postTemplate}";
exit();
}
elseif($do == 2)
{
$dede_fields = empty($dede_fields) ? '' : trim($dede_fields);
$dede_fieldshash = empty($dede_fieldshash) ? '' : trim($dede_fieldshash);
if(!empty($dede_fields))
{
if($dede_fieldshash != md5($dede_fields.$cfg_cookie_encode))
{
showMsg('數(shù)據(jù)校驗不對,程序返回', '-1');
exit();
}
}
$diyform = $dsql->getOne("select * from where diyid='$diyid' ");
if(!is_array($diyform))
{
showmsg('自定義表單不存在', '-1');
exit();
}

$addvar = $addvalue = '';

if(!empty($dede_fields))
{

$fieldarr = explode(';', $dede_fields);
if(is_array($fieldarr))
{
foreach($fieldarr as $field)
{
if($field == '') continue;
$fieldinfo = explode(',', $field);
if($fieldinfo[1] == 'textdata')
{
${$fieldinfo[0]} = FilterSearch(stripslashes(${$fieldinfo[0]}));
${$fieldinfo[0]} = addslashes(${$fieldinfo[0]});
}
else
{
${$fieldinfo[0]} = GetFieldValue(${$fieldinfo[0]}, $fieldinfo[1],0,'add','','diy', $fieldinfo[0]);
}
$addvar .= ', `'.$fieldinfo[0].'`';
$addvalue .= ", '".${$fieldinfo[0]}."'";
}
}

}

$query = "insert into `{$diy->table}` (`id`, `ifcheck` $addvar) values (NULL, 0 $addvalue); ";

if($dsql->executenonequery($query))
{
$id = $dsql->GetLastID();
if($diy->public == 2)
{
//diy.php?action=view&diyid={$diy->diyid}&id=$id
$goto = "diy.php?action=list&diyid={$diy->diyid}";
$bkmsg = '發(fā)布成功,現(xiàn)在轉(zhuǎn)向表單列表頁...';
}
else
{
$goto = !empty($cfg_cmspath) ? $cfg_cmspath : '/';
$bkmsg = '發(fā)布成功,請等待管理員處理...';
}
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "">
<html xmlns="">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>訂單核對 </title>
<link href="/img_cnosn/css_end.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="ctent">
<h1>您已成功提交訂單,請仔細核對你的信息!</h1>
<ul>
<script language="javascript">
function ReplaceAll(str,sptr,sptr1)
{
while (str.indexOf(sptr) >= 0)
{
str = str.replace(sptr, sptr1);
}
return str;
}

descria=",您的姓名:,聯(lián)系電話:,送貨地址:,購買產(chǎn)品:,支付方式:,訂貨留言:,b";
var descri=new Array();
descri=descria.split(",");
str= "'.$addvalue.'" ;
str=ReplaceAll(str,"\&;","");
var strarray=new Array();
strarray=str.split(",") ;
for(i=0;i<7;i++){
document.write("<li>"+descri[i]+strarray[i]+"</li>");
}
</script>
</ul>
<div class="info">友情提示:您的訂單已提交成功,我們的客服會盡快與你取得聯(lián)系 <a href="#" onclick="window.operner = null;window.open(\&;\&;,\&;_self\&;);window.close();">確認并關(guān)閉</a> 或 <a href="#" onclick="window.operner = null;window.open(\&;\&;,\&;_self\&;);window.close();">返回修改</a></div>
</div>
</body>
</html>
';
}
}
}
上是代碼。這樣就是固定提取前幾個表單信息給用戶確認,不過在后臺增加表單的時候一定要統(tǒng)一按以上數(shù)組的順序進行添加字段。這樣才能對應(yīng)。

有一個不好的地方是,這個文件只要一改就是針對所有的表單提交,不過這只是一個方法,供參考,最終還得靈活應(yīng)用。



收縮
  • 微信客服
  • 微信二維碼
  • 電話咨詢

  • 400-1100-266