DedeCMS織夢防止惡意提交自定義表單設置必填項[織夢網站模板使用教程]

閱讀 ?·? 發布日期 2019-05-27 08:43 ?·? admin

DedeCMS織夢防止惡意提交自定義表單設置必填項[織夢網站模板使用教程]許多企業網站會有提交訂單的功能,dedecms自定義表單制作就能滿足,為了防止用戶惡意提交表單,可以在自定義表單的字段設置必填項或者判斷輸入的值是否符合規定的功能,主要有兩種方法處理:修改表單源文件(不靈活,一個網站有可能提交多個表單);JS判斷輸入值(推薦)。

用默認的/plus/diy.php增加必填判斷

       大約在40行左右找到如下代碼,

$dede_fields = empty($dede_fields) ? '' : trim($dede_fields);

后面添加添加代碼:

//增加必填字段判斷
if($required!=''){
if(preg_match('/,/', $required))
   {
       $requireds = explode(',',$required);
       foreach($requireds as $field){
           if($$field==''){
               showMsg('帶*號的為必填內容,請正確填寫', '-1');
               exit();
           }
       }
   }else{
       if($required==''){
           showMsg('帶*號的為必填內容,請正確填寫', '-1');
           exit();
       }
   }
}
//end

       在自定義表單模板找到

<form action="/plus/diy.php" enctype="multipart/form-data" method="post">

       下面加入以下代碼(value="自定義字段"

<input type="hidden" name="required" value="content,name,tel" />

用JS判斷

紅色部分為自定義字段,把以下代碼放在</head>之前,

<script type='text/javascript'>
<!-- 
$(document).ready(function() 
{ 
//驗證 
$('#complain').submit(function () 
{ 
if($('#name').val()==""){ 
$('#name').focus(); 
alert("用戶名不能為空!"); 
return false; 
} 
if($('#tel').val()=="") 
{ 
$('#tel').focus(); 
alert("聯系電話不能為空!"); 
return false; 
} 
if($('#title').val()=="") 
{ 
$('#title').focus(); 
alert("標題不能為空!"); 
return false; 
} 
if($('#text').val()=="") 
{ 
$('#text').focus(); 
alert("具體內容不能為空!"); 
return false; 
} 
}) 
}); 
-->
</script>

      上面只能判斷數值是否為空,結合正則表達式,能準確判斷輸入的表單信息是否為規定格式數據。舉例說明:

<script type="text/javascript">
  $(function(){
  $(".btn").click(function(){
  var myNum=/^[\u4e00-\u9fa5]+$/;
 if(myNum.test($("#name").val())){}else{alert("請輸入中文名字");return false;};
  var myNum=/^[\u4e00-\u9fa5]+$/;
 if(myNum.test($("#xq").val())){}else{alert("請輸入小區中文名字");return false;};
  var mymj=/^([1-9][0-9]{1,3})+(.[0-9]{1,4})?$/
 if(mymj.test($("#mj").val())){}
 else{alert("戶型面積請輸入首位不為零并且在2-4位的有效數字有效數字");return false;};
  var myphone=/^\d{8,11}$/
 if(myphone.test($("#phone").val())){}
 else{alert("電話位數在8-11位");return false;};
 if($("input[type=text]").val()==''){alert("文本框不能為空!");return false;}
 else {alert("發布成功!請保持電話暢通!客服人員會在24小時之內與您聯系!");return true;}});});
</script>

前臺部分實例

<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" />
    <p class="tuancon">
     <h3>重慶裝修團購申請,立省5000元</h3>
     <p class="tuancon_L">
      <p><label>我的稱呼<em>*</em></label><input class="form1" type="text" name="name" id="name"/></p>
      <p><label>我的小區<em>*</em></label><input class="form1" type="text" name="xq" id="xq"/></p>
      <p><label>聯系電話<em>*</em></label><input class="form1" type="text" name="phone" id="phone"/></p>
      <p><label>Q       Q  </label><input class="form1" type="text" name="qq" id="qq"/></p>
     </p>
     <p class="tuancon_R">
      <p><label>戶型面積<em>*</em></label><input class="form1" type="text" name="mj" id="mj"/></p>
      <p><label>衛生間數</label>
         <select name='wc'>
          <option value='1個'>1個</option>
          <option value='2個'>2個</option>
          <option value='2個以上'>2個以上</option>
         </select>
      </p>
      <p><label>陽臺面積</label><input class="form1" type="text" name="ytmj" id="ytmj"/></p>
      <p><label>喜歡風格</label>
        <select name='fg'>
         <option value='現代簡約風格'>現代簡約風格</option>
         <option value='地中海風格'>地中海風格</option>
         <option value='簡歐風格'>簡歐風格</option>
         <option value='歐式風格'>歐式風格</option>
         <option value='中式風格'>中式風格</option>
         <option value='美式風格'>美式風格</option>
         <option value='后現代風格'>后現代風格</option>
         <option value='新古典風格'>新古典風格</option>
         <option value='其他風格'>其他風格</option>
        </select>
       </p>
      </p>
      <p class="clear"></p>
      <p class="sheng_box"><input class="btn1" type="submit" value="免費申請裝修"/></p>
      <input type="hidden" name="dede_fields" value="xq,text;fg,select;name,text;phone,text;mj,float;qq,int;wc,select;ytmj,int" />
      <input type="hidden" name="dede_fieldshash" value="c53edcf88ed9787e2fe3266b16e2778a" />
     </p>
    </form>