国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > CMS > 織夢DEDE > 正文

Dedecms網站給自定義表單加dede模板自帶驗證碼的方法

2024-07-12 09:11:48
字體:
來源:轉載
供稿:網友

有時候,我們因為需要給織夢dedecms網站的自定義表單添加驗證碼,防止惡意填寫表單提交。

我們可以用以下的方法來實現:

首先,我們要找到 /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();

             }  

         }

修改好后保存一下文件。

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

 

<input type="text" class="intxt w200" style="width: 50px; text-transform: uppercase;" id="vdcode" name="vdcode" class="code"/>

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

在這個靜態頁面里還得引用JQuery

再加入 JS代碼塊

<script type="text/javascript"> 
 $ = 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>

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

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

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

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

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

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('數據校驗不對,程序返回', '-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 = '發布成功,現在轉向表單列表頁...';
   }
   else
   {
    $goto = !empty($cfg_cmspath) ? $cfg_cmspath : '/';
    $bkmsg = '發布成功,請等待管理員處理...';
   }
   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=",您的姓名:,聯系電話:,送貨地址:,購買產品:,支付方式:,訂貨留言:,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">友情提示:您的訂單已提交成功,我們的客服會盡快與你取得聯系 <a href="#" onclick="window.operner = null;window.open(/'/',/'_self/');window.close();">確認并關閉</a> 或 <a href="#" onclick="window.operner = null;window.open(/'/',/'_self/');window.close();">返回修改</a></div>
</div>
</body>
</html>
';
  }
 }
}
 上是代碼。這樣就是固定提取前幾個表單信息給用戶確認,不過在后臺增加表單的時候一定要統一按以上數組的順序進行添加字段。這樣才能對應。

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

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 大同市| 宁波市| 平舆县| 桐城市| 新竹市| 司法| 岢岚县| 星座| 汉寿县| 毕节市| 青海省| 龙口市| 洛扎县| 屏南县| 淄博市| 三亚市| 连平县| 宁乡县| 金堂县| 桂阳县| 理塘县| 措美县| 梅州市| 甘洛县| 广饶县| 邯郸市| 瑞丽市| 肃北| 建水县| 灌南县| 关岭| 通许县| 南丰县| 九江县| 三台县| 石首市| 江永县| 江达县| 瓦房店市| 汾西县| 天台县|