1. 程式人生 > >php 給app寫短信驗證碼 使用memcache緩存驗證碼

php 給app寫短信驗證碼 使用memcache緩存驗證碼

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緩存驗證碼