名站网址导航为大驾家提供DedeCMS站点程序站点教程相关的知识,比如织梦程序安装教程,织梦程序系统故障等教程。
有时候,咱们因为需要给织梦程序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>
';
}
}
}
上是相关具体代码如下。这样就是固定提取前几个表单信息给用户确认,不过在网站的后台增加表单的时候一定要统一按以上数组的顺序进行添加字段。这样才能对应。
有一个不好的地方是,这个网站文件只要一改就是针对所有的表单提交,不过这只是一个相关具体操作方法,供参考,最终还得灵活应用。
关于DedeCMS站点程序站点教程相关的知识,就说到这里了希望能帮助朋友们。织梦程序dedecms网站程序5.7实现迅雷下载链接