聯系官方銷售客服
1835022288
028-61286886
短信驗證碼去除第一層圖片驗證的方式
代碼提供者:@ 易學習 (小波設計)
非常感謝大佬的無私幫助~
目前系統的短信驗證是需要首先進行一次圖片驗證~這種方式很好但是在某些場合不適合~因為經過雙重驗證對于用戶有些麻煩~
前端表單代碼:
<button class="btn blue" onclick="dr_ajax_url('/index.php?s=form&c=api&m=send_code&&code='+$('#dr_code').val()+'&id='+$('#dr_dianhua').val())" type="button">獲取手機驗證碼</button>
將提交url轉化成上面的樣式 然后刪除圖片驗證碼的代碼
控制器文件建立位置:dayrui/app/form/controllers/Api.php
控制器代碼:
<?php namespace Phpcmf\Controllers; // 用戶api class Api extends \Phpcmf\Common { /** * 發送驗證碼 */ public function send_code() { $phone = dr_safe_replace(\Phpcmf\Service::L('input')->get('id')); if (!$phone) { $this->_json(0, dr_lang('手機號碼未填寫'), ['field' => 'phone']); } elseif (!\Phpcmf\Service::L('Form')->check_phone($phone)) { $this->_json(0, dr_lang('手機號碼格式不正確'), ['field' => 'phone']); } if (\Phpcmf\Service::L('Form')->get_mobile_code($phone)) { // 驗證操作間隔 $this->_json(1, dr_lang('已經發送稍后再試')); } $code = rand(100000, 999999); $rt = \Phpcmf\Service::M('member')->sendsms_code($phone, $code); if (!$rt['code']) { $this->_json(0, dr_lang('發送失敗')); } \Phpcmf\Service::L('Form')->set_mobile_code($phone, $code); $this->_json(1, dr_lang('驗證碼發送成功')); } }
表單控制器修改:dayrui/app/form/controllers/ {你的表單名稱}.php
<?php namespace Phpcmf\Controllers; /** * 二次開發時可以修改本文件,不影響升級覆蓋 */ class Xfbd extends \Phpcmf\Home\Form { public function index() { $this->_Home_List(); } public function show() { $this->_Home_Show(); } public function post() { $code = \Phpcmf\Service::L('Form')->get_mobile_code($dianhua); if (!$code) { $this->_json(0, dr_lang('沒有發送驗證碼')); } elseif ($code != $_POST['sms']) { $this->_json(0, dr_lang('驗證碼不正確')); } $this->_Home_Post(); } } 然后就ok了~親測可用~
短信驗證最好是能開啟關閉驗證碼
不做效驗有時候也不好,會被別人利用來亂發短信
短信亂發坑你小事,學習一下就行了,實際項目不建議這么干了
回復@易學習 嗯吶~先看一段時間效果~如果實在太多了在使用原來的方法~
回復@小黃人 18html.com 是的~不過還是先跑一段時間試試~~
有些場景下確實不需要圖形驗證碼,官方注冊也支持開發,但強制開啟了
確實,需要這個東西!?。?/p>