phpcms實現驗證碼以及非同步提交表單資料

來源:互聯網
上載者:User

標籤:post   java   str   javascrip   前台   close   config   define   include   

在phpcms網站中使用驗證碼我們要考慮前端模板頁面中如何調用驗證碼和背景程式中如何驗證兩個方面:

一、在模板中,調用驗證碼的代碼如下:

1 <label for="code">驗證碼</label>2 <input type="text" id="code" name="code" size="10">3 {form::checkcode(‘code_img‘, ‘4‘, ‘14‘, 100, 30)}

注意,從標籤中可知是使用了form類中的checkcode方法,那麼就要確保此模板所在的控制器檔案中已經調用了該類,調用方法如下:

1 pc_base::load_sys_class(‘form‘, ‘‘, 0);

此類檔案位置/phpcms/libs/classes/form.class.php,你可以通過查看此檔案中的checkcode方法參數注釋來瞭解各參數所代表的意義。

二、在後端控制器檔案php程式中,示範代碼如下:
 1 defined(‘IN_PHPCMS‘) or exit(‘No permission resources.‘); 2 pc_base::load_sys_class(‘form‘,‘‘, 0); 3   4 class index { 5     public function init(){ 6     if(isset($_POST[‘dosubmit‘])){ //提交資料 7         //啟動session 8         $session_storage = ‘session_‘.pc_base::load_config(‘system‘,‘session_storage‘); 9         pc_base::load_sys_class($session_storage);10         //驗證碼11         if (($_SESSION[‘code‘] != strtolower($_POST[‘code‘])) || empty($_SESSION[‘code‘])) {12         showmessage("驗證碼錯誤");13         } else {14         $_SESSION[‘code‘] = ‘‘;15         }           16             

這裡我們注意三點:

  1. 第二行,不要忘記引入form類;

  2. 第7、8、9行,在讀取session資料前先引入session儲存配置與啟動對應類(一般是mysql);

  3. 判斷session的if條件即將表單填入的code值與session中的code值進行對比;

 

/**********************************上面純屬拷貝***********************************************/

下面拿方瞳科技官網作為例子:

在搜尋表單的控制器,也就是搜尋表單的action是這樣寫的:

 1 public function init() { 2         if(isset($_GET[‘dosubmit‘])){//提交資料 3                 //啟動session 4                 $session_storage = ‘session_‘.pc_base::load_config(‘system‘,‘session_storage‘); 5                 pc_base::load_sys_class($session_storage); 6                 //驗證碼 7                 if (($_SESSION[‘code‘] != strtolower($_GET[‘code‘])) || empty($_SESSION[‘code‘])) { 8                 // showmessage("驗證碼錯誤"); 9                     $back=array();10                             $back[0][‘jieguo‘]=0;11                             $back[0][‘back‘]=‘驗證碼錯誤‘;12                             echo json_encode($back);die;13                 } else {14                 $_SESSION[‘code‘] = ‘‘;15             }16         } 

/*****這個控制器一直走下去,全部驗證通過,查詢擷取到的資料就是醬紫的(下面)*******

1 // include    template(‘search‘,‘list‘);2             if($data){3                 echo json_encode($data);die;4                 }else{5                     $back=array();6                     $back[0][‘jieguo‘]=0;7                     $back[0][‘back‘]=‘沒找到您搜尋的產品‘;8                     echo json_encode($back);die;9                 }

好像這兒呢不是ajaxreturn啊、、、、

前台頁面是醬紫的,搜尋表單:

 1 <form action="{APP_PATH}index.php" method="get" > 2  3                     <title class="textshow">您可以通過序號查詢到產品的出產資訊等說明</title> 4  5                     <input type="hidden" name="m" value="search"/> 6  7                     <input type="hidden" name="c" value="index"/> 8  9                     <input type="hidden" name="a" value="init"/>10 11                     <input type="hidden" name="dosubmit" value="1"/>12 13                     <input type="hidden" name="typeid" value="56" id="typeid"/>14 15                     <input type="hidden" name="siteid" value="1" id="siteid"/>16 17                     <input type="text" name="q" id="q" class="xlh" placeholder="請輸入商品序號">18 19                     <span class="yzmbox">20 21                         <input type="text" class="yzma" name=‘code‘ placeholder="請輸入驗證碼">
{form::checkcode(‘code_img‘, ‘4‘, ‘14‘, 100, 30)}</span>22 23 <input type="button" class="cxun" value="查詢"></form>

下面是javascript代碼:

 1 <script> 2 function closea(){ 3         $(‘#back‘).html(‘‘); 4     } 5 $(‘.cxun‘).click(function(){    6             var yzm=$(‘.yzma‘).val(); 7             var sear=$(‘#q‘).val(); 8                 $.ajax({ 9                         url:‘{APP_PATH}index.php‘,10                         data:{‘m‘:‘search‘,‘c‘:‘index‘,‘a‘:‘init‘,‘typeid‘:56,‘siteid‘:1,‘dosubmit‘:1,‘q‘:sear,‘code‘:yzm},11                         type:‘get‘, 12                         dataType:‘json‘,                    13                         success:function(back){14                             $(‘#code_img‘).click();15                             if(back[0][‘jieguo‘]==0){   16                                 $(‘#back‘).html(‘‘);                    17                                 alert(back[0][‘back‘]);18                             }else{19                                 var back_html="<table><tbody><tr><th class=‘ccsj‘>產品名稱</th>
<th class=‘ccsj‘>出產時間</th><th class=‘cpsm‘>產品說明</th></tr>";20 $(back).each(function(k,v){21 var title=v.title;22 var content=v.description;23 var time=v.chanpinshengchanriqi;24 back_html += ("<tr><td>"+title+"</td><td>"+time+"</td><td>"+content+"</td></tr>");25 });26 back_html +="<tr><td colspan=‘3‘><a href=‘#back‘>
<span class=‘closea‘ onclick="+"closea(‘.jgbox‘)>關閉</span></a></td></tr></tbody></table>";27 $(‘#back‘).html(back_html); 28 }29 }30 }); 31 });32 </script>

似乎在控制器之中返回json資料使用echo??

phpcms實現驗證碼以及非同步提交表單資料

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.