您现在的位置是:网站首页>建站学院织梦CMS

Dedecms网站给自定义表单加dede模板自带验证码的方法

2020-04-26来源: 织梦CMS 人已围观

简介 有时候,我们因为需要给织梦dedecms网站的自定义表单添加验证码,防止恶意填写表单提交。 我们可以用以下的方法来实现: 首先,我们要找到 /plus/diy.php 这个文件 在头部引入文件: re

有时候,我们因为需要给织梦dedecms网站的自定义表单添加验证码,防止恶意填写表单提交。sUV企业网站模板免费下载_网站建设_企业网站建设方案

我们可以用以下的方法来实现:sUV企业网站模板免费下载_网站建设_企业网站建设方案

首先,我们要找到 /plus/diy.php 这个文件sUV企业网站模板免费下载_网站建设_企业网站建设方案

在头部引入文件:sUV企业网站模板免费下载_网站建设_企业网站建设方案

require_once(DEDEINC.'/membermodel.cls.php');sUV企业网站模板免费下载_网站建设_企业网站建设方案

然后找到sUV企业网站模板免费下载_网站建设_企业网站建设方案

elseif($do == 2)sUV企业网站模板免费下载_网站建设_企业网站建设方案

    {  在这个地方加入代码块  sUV企业网站模板免费下载_网站建设_企业网站建设方案

       //验证码验证sUV企业网站模板免费下载_网站建设_企业网站建设方案

        $svali = GetCkVdValue();sUV企业网站模板免费下载_网站建设_企业网站建设方案

         if(preg_match("/1/",$safe_gdopen)){sUV企业网站模板免费下载_网站建设_企业网站建设方案

             if(strtolower($vdcode)!=$svali || $svali=='')sUV企业网站模板免费下载_网站建设_企业网站建设方案

             {sUV企业网站模板免费下载_网站建设_企业网站建设方案

                 ResetVdValue();sUV企业网站模板免费下载_网站建设_企业网站建设方案

                 ShowMsg('验证码错误!', '-1');sUV企业网站模板免费下载_网站建设_企业网站建设方案

                 exit();sUV企业网站模板免费下载_网站建设_企业网站建设方案

             }  sUV企业网站模板免费下载_网站建设_企业网站建设方案

         }sUV企业网站模板免费下载_网站建设_企业网站建设方案

修改好后保存一下文件。sUV企业网站模板免费下载_网站建设_企业网站建设方案

第二步:在使用验证码的自定义表单静态页面中插入代码块sUV企业网站模板免费下载_网站建设_企业网站建设方案

 sUV企业网站模板免费下载_网站建设_企业网站建设方案

<input type="text" class="intxt w200" style="width: 50px; text-transform: uppercase;" id="vdcode" name="vdcode" class="code"/>sUV企业网站模板免费下载_网站建设_企业网站建设方案

<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>sUV企业网站模板免费下载_网站建设_企业网站建设方案

在这个静态页面里还得引用JQuerysUV企业网站模板免费下载_网站建设_企业网站建设方案

再加入 JS代码块sUV企业网站模板免费下载_网站建设_企业网站建设方案

<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>sUV企业网站模板免费下载_网站建设_企业网站建设方案

好了,现在试一试,是不是可以实现验证码的提交了?一个简单的dedecms自定义表单dede模板自带验证码的功能就实现了。sUV企业网站模板免费下载_网站建设_企业网站建设方案

织梦自定义表单的应用非常方便,不管用在什么地方,收集信息特别方便制作和管理。sUV企业网站模板免费下载_网站建设_企业网站建设方案

有如下几个建议,把下拉框和单选按扭在后台做成单行文本,这样的话不管你提交的是下拉框或是单选,都可以有效的接收它的值。如果后台就做成单选或下拉,如果改了默认值,提交的表单值跟后台默认值对不上的话就会出现提交不成功的情况,就是前台提交的时候选择了,但后台看不到数据。若是做成单行文本,提交的值就会以文本的形式写入到后台,表单修改值也更加显得方便了。sUV企业网站模板免费下载_网站建设_企业网站建设方案

提交之后会显示织梦的默认提示信息“友情提示”几秒过后就自动转到首页。如何才能让提交的信息停留,并让用户确认所提交的信息。sUV企业网站模板免费下载_网站建设_企业网站建设方案

我想了如下方式。给diy.php里提交成功后输入固定值而不是自带的跳转方法。如下:sUV企业网站模板免费下载_网站建设_企业网站建设方案

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();
  }sUV企业网站模板免费下载_网站建设_企业网站建设方案

  $addvar = $addvalue = '';sUV企业网站模板免费下载_网站建设_企业网站建设方案

  if(!empty($dede_fields))
  {sUV企业网站模板免费下载_网站建设_企业网站建设方案

   $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]}."'";
    }
   }sUV企业网站模板免费下载_网站建设_企业网站建设方案

  }sUV企业网站模板免费下载_网站建设_企业网站建设方案

  $query = "insert into `{$diy->table}` (`id`, `ifcheck` $addvar)  values (NULL, 0 $addvalue); ";sUV企业网站模板免费下载_网站建设_企业网站建设方案

  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>sUV企业网站模板免费下载_网站建设_企业网站建设方案

<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>
';
  }
 }
}
 上是代码。这样就是固定提取前几个表单信息给用户确认,不过在后台增加表单的时候一定要统一按以上数组的顺序进行添加字段。这样才能对应。sUV企业网站模板免费下载_网站建设_企业网站建设方案

有一个不好的地方是,这个文件只要一改就是针对所有的表单提交,不过这只是一个方法,供参考,最终还得灵活应用。sUV企业网站模板免费下载_网站建设_企业网站建设方案

 sUV企业网站模板免费下载_网站建设_企业网站建设方案

很赞哦! ()

猜您喜欢

付费说明

    1、安装cms后台,费用是200,基础费用200包括后台调试以及部分页面模板修改.

    2、请加我个人微信 634626966,或者扫一扫微信二维码。备注“网站”

    3、系统安装只限定于帝国cms,并且支持php,虚拟主机,请选择linux系统

    4、【收费说明】制作企业网站,我是这么收费的!

文章评论

阿里云代金券 100 云产品通用

有效期30天 首购用户

立即领取
阿里云代金券 100 云产品通用

有效期30天 复购+升级

立即领取

站点信息

l