php 給app寫短信驗證碼 使用memcache緩存驗證碼
阿新 • • 發佈:2017-06-09
pty pat spa 註冊 短信 sage class 獲取 沒有
廢話不多說 直接上代碼 直接使用session 儲存短信驗證碼,app 那邊一直說獲取不到 註冊的時候一直提示空 後面想想還是用緩存吧 上代碼:
//發送驗證碼方法 public function sendSMSCodeOp(){ require_once(BASE_ROOT_PATH.DS.‘api/framework/function/sms.php‘); require_once(BASE_ROOT_PATH.DS.‘api/framework/function/common.php‘); $sms = new sms();$_code = rand(100000, 999999); $_mobile = $_POST[‘mobile‘]; $_content = "【百城網】歡迎註冊百城網,您的驗證碼為" . $_code; if(empty($_mobile)){ $this->_message(CODE_ERROR,‘手機號碼不能空‘); }else{ if(!isMobile($_mobile)){ $this->_message(CODE_ERROR,‘手機號碼格式有誤‘); }else{ if($sms->sendSMS($_content, $_mobile)){ // $_SESSION[‘SMS_Code‘] = $_code; //$_SESSION[‘mobile‘] = $_mobile; //這一步寫入緩存,由於服務器沒有安裝memcache,就用框架帶的緩存機制來存儲 $cache = Cache::getInstance(C(‘cache.type‘));$code_info = array(); $code_info[‘last_access‘] = time(); $code_info[‘sms_mobile‘] = $_mobile; $code_info[‘sms_mobile_code‘] = $_code; $cache->set($_mobile,$code_info); $this->_printJson(CODE_SUCCESS,array("success"=>1),‘短信驗證碼發送成功‘); }else{ $this->_message(CODE_ERROR,‘驗證碼發送失敗‘); } } } }
/** * @param $mobile * @param $mobile_code * 驗證驗證碼是否正確 */ private function checkCode($mobile,$mobile_code){ $obj_cache = Cache::getInstance(C(‘cache.type‘)); $obj = $obj_cache->get($mobile); if(empty($obj)){ return array(‘error‘ => ‘您還未發送驗證碼‘); }else{ if(!isset($obj[‘last_access‘])||(time()-$obj[‘last_access‘])>180*1000){ return array(‘error‘ => ‘驗證碼已經失效‘); }else{ if($mobile_code==$obj[‘sms_mobile_code‘] && $mobile==$obj[‘sms_mobile‘] ){ return array("success"=>‘驗證通過‘); }else{ return array(‘error‘ => ‘驗證碼錯誤‘); } } } }
php 給app寫短信驗證碼 使用memcache緩存驗證碼