1. 程式人生 > 實用技巧 >1.2手機簡訊驗證碼

1.2手機簡訊驗證碼

再寫程式碼前我們應該首先有個基本思路

  1、接收引數(使用者填寫的手機號,圖形驗證碼以及uuid

  2、校驗引數

    2.1三個引數是否有空值的情況

    2.2校驗手機號是否為正常的手機號(這裡用正則來校驗

    2.3校驗圖形驗證碼

      利用uuid中redis中獲取文字版的圖形驗證碼

      將伺服器中的驗證碼和使用者填寫的進行對比

  3、傳送手機驗證碼

  4、將手機驗證碼存放到redis中

  5、返回結果

以下是程式碼的實現

 1 def sms_code():
 2     # 1.接受引數(手機號,使用者填寫的圖形驗證碼,UUID)
 3     res = request.data
4 res_dict =json.loads(res) 5 mobile = res_dict.get('mobile') 6 image_code = res_dict.get('image_code') 7 image_code_id = res_dict.get('image_code_id') 8 # 2.檢驗引數 9 # 2.1三個三叔是否有空之的情況 10 if not all([mobile,image_code,image_code_id]): 11 return jsonify(error=RET.PARAMERR,errmsg="
缺失引數") 12 # 2.2檢驗手機號是否是正常的手機號(正則 13 if not re.match("^1[37895][0-9]{9}$",mobile): 14 return jsonify(error=RET.PARAMERR, errmsg="非法手機號") 15 # 2.3校驗圖形驗證碼 16 # 利用UUID從redis中獲取文字版圖形驗證碼 17 try: 18 image_code_server = redis_store.get("image_code:"+image_code_id)
19 except Exception as e: 20 current_app.logger.error(e) 21 return jsonify(error=RET.DATAERR, errmsg="圖形驗證碼查詢失敗") 22 #如果image_code_server沒有的話返回一個json資料 23 if not image_code_server: 24 return jsonify(error=RET.NODATA, errmsg="未查詢到驗證碼bro") 25 # 將伺服器儲存的驗證碼和使用者的驗證碼進行對比 26 if image_code_server.lower() != image_code.lower(): 27 return jsonify(error=RET.PARAMERR, errmsg="驗證碼輸入錯誤") 28 # 3.傳送手機驗證碼 29 sms_code = "%04d"% random.randint(0,9999) 30 print(sms_code) 31 # sms_res = CCP().send_template_sms(mobile,[sms_code,5],1) 32 sms_res = 0 33 if sms_res != 0: 34 return jsonify(error=RET.THIRDERR, errmsg="簡訊傳送失敗") 35 # 4.將手機驗證碼存放到redis中 36 try: 37 #生成uuid放進redis資料庫中 38 redis_store.set('sms_code:' + mobile, sms_code, constants.SMS_CODE_REDIS_EXPIRES) 39 except Exception as e: 40 current_app.logger.error(e) 41 return jsonify(error=RET.DATAERR, errmsg="儲存失敗") 42 # 5.返回結果 43 return jsonify(error=RET.OK, errmsg="傳送成功") 44 return jsonify()

其中返回的jsonify(error=RET.,errmsg="")中的RET我們呼叫的是第三方的包responsee_code.py中的類

用來判斷相對應的錯誤型別以及返回給使用者的錯誤資訊

最後還有一點就是第28行中的傳送簡訊我們用的是第三方平臺雲通訊來發送的..但是吧..這裡我們方便一點就用random隨機數隨便生成一個了

雲通訊我會單獨用個部落格來介紹的