织梦CMS建站教程,专业织梦仿站教程,织梦CMS高级篇教程,织梦建站基础入门到精通教程。织梦开发教程,写个不安套路出牌的教程,提交出现数据校验不对时,别人都教你对比数据校验,那些都是非常低级的织梦玩法。下面,教你写个一劳永逸的高端玩法。熟悉织梦的,用起来很简单,不太熟悉织梦的,或者是不会代码的,就能把小白整蒙圈。
教程开始
①、打开 /plus/diy.php 搜索
$diy = new diyform($diyid);
在它后面敲个回车,然后在它下面加入
$dede_fields = $diy->getForm2(true);
②、继续往下看到下面这段代码,把它注释或者删掉
if(!empty($dede_fields)) { if($dede_fieldshash != md5($dede_fields.$cfg_cookie_encode)) { showMsg('数据校验不对,程序返回', '-1'); exit(); } }
改为
/* if(!empty($dede_fields)) { if($dede_fieldshash != md5($dede_fields.$cfg_cookie_encode)) { showMsg('数据校验不对,程序返回', '-1'); exit(); } } */
就是这段代码在作妖,删除或者注释后就不会提示数据校验不对了。
添加方法
之前,加了 getForm2() 方法,还没写代码呢。打开 /include/diyform.cls.php 搜索
getForm(
往下看,看到这个方法末尾的这段代码
$formstring .= "<input type=\"hidden\" name=\"dede_fields\" value=\"".$formfields."\" />\n"; $formstring .= "<input type=\"hidden\" name=\"dede_fieldshash\" value=\"".md5($formfields.$cfg_cookie_encode)."\" />"; return $formstring; }
改为
//$formstring .= "<input type=\"hidden\" name=\"dede_fields\" value=\"".$formfields."\" />\n"; //$formstring .= "<input type=\"hidden\" name=\"dede_fieldshash\" value=\"".md5($formfields.$cfg_cookie_encode)."\" />"; return $formstring; } function getForm2($type = 'post', $value = '', $admintype = 'diy') { $dtp = new DedeTagParse(); $dtp->SetNameSpace("field", "<", ">"); $dtp->LoadSource($this->info); $formstring = ''; $formfields = ''; $func = $type == 'post' ? 'GetFormItem' : 'GetFormItemValue'; if (is_array($dtp->CTags)) { foreach ($dtp->CTags as $tagid => $tag) { if ($tag->GetAtt('autofield')) { if ($type == 'post') { $formstring .= $func($tag, $admintype); } else { $formstring .= $func($tag, dede_htmlspecialchars($value[$tag->GetName()], ENT_QUOTES), $admintype); } $formfields .= $formfields == '' ? $tag->GetName().','.$tag->GetAtt('type') : ';'.$tag->GetName().','.$tag->GetAtt('type'); } } } $aformfields .= $formfields; return $aformfields; }
完成了,修改非常简单,不需要啥技术,我就不放懒人包了。
调用标签
在织梦模板的调用标签中,像这种明显标注织梦特征的,专业人士一看就知道是织梦表单。
<input type="hidden" name="dede_fields" value="chenhu,text;dianhua,text" />
<input type="hidden" name="dede_fieldshash" value="9debc802be688e5794b8032ce4b5fe38" />
看下面是正确的调用标签方法。什么带字段列表,还带数据校验的,改完以后就根本不需要了。
<form action="/plus/diy.php" enctype="multipart/form-data" method="post"> <input type="hidden" name="action" value="post" /> <input type="hidden" name="diyid" value="1" /> <input type="hidden" name="do" value="2" /> <td align="right" valign="top">称呼:</td> <td><input type='text' name='chenhu' id='chenhu' style='width:250px' class='intxt' value='' /> <td align="right" valign="top">电话:</td> <td><input type='text' name='dianhua' id='dianhua' style='width:250px' class='intxt' value='' /> <input type="submit" name="submit" value="提 交" class='coolbg' /> <input type="reset" name="reset" value="重 置" class='coolbg' /> </form>
改改名称,用AJAX的形式提交,完全看不出来是织梦了吧。啥?版权?织梦程序?织梦特征?织梦网站?不存在的。
本文结束
评论专区
发表评论
评论列表(无评论)