def register(): # 获取参数 dict_date = request.json mobile = dict_date.get('mobile') sms_code = dict_date.get('sms_code') password = dict_date.get('password') # 校验参数 if not all([mobile, sms_code, password]): return jsonify(error=RET.PARAMERR, errmsg='注册参数不全') try: redis_sms_code = redis_store.get('SMS' + mobile) except Exception as e: current_app.logger.error(e) return jsonify(error=RET.DBERR, errmsg='获取手机号码失败了') if not redis_sms_code: return jsonify(error=RET.NODATA, errmsg='短信验证码过期了') user = User() user.nick_name = mobile user.mobile = mobile user.password = password user.last_login = datetime.datetime.now() try: db.session.add(user) db.session.commit() except Exception as e: current_app.logger.error(e) return jsonify(error=RET.DBERR, errmsg='保存异常') session["user_id"] = user.id session["nick_name"] = user.nick_name session["mobile"] = user.mobile return jsonify(error=RET.OK, errmsg="注册成功了!!!")
def register(): # 获取手机号码 mobile = request.json.get("mobile") # 用户在客户端输入的验证码 smscode = request.json.get("smscode") # 用户在里面输入的密码 password = request.json.get("password") # 获取系统里面存储的短信验证码 real_sms_code = redis_store.get("sms_code_" + mobile) if not real_sms_code: return jsonify(errno=RET.NODATA, errmsg="短信验证码已经过期") if smscode != real_sms_code: return jsonify(errno=RET.PARAMERR, errmsg="请输入正确的短信验证码") # 创建一个用户对象用来注册用户 user = User() user.mobile = mobile user.password = password user.nick_name = mobile # 获取当前的时间,用来注册 user.last_login = datetime.now() db.session.add(user) db.session.commit() return jsonify(errno=RET.OK, errmsg="注册成功")
def sms_code(): # 获取参数 json_data = request.data dict_data = json.loads(json_data) mobile = dict_data.get('mobile') image_code = dict_data.get('image_code') image_code_id = dict_data.get('image_code_id') # 参数为空校验 if not all([mobile, image_code, image_code_id]): return jsonify(errno=RET.DATAERR, errmsg='参数不全') # 校验手机的格式 if not re.match('1[3-9]\d{9}', mobile): return jsonify(errno=RET.DATAERR, errmsg='手机号格式错误') # 通过图片验证码编号获取图片验证码 try: image_code_data = redis_store.get('image_code:%s' % image_code_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='数据库查询错误') # 判断验证码是否过期 if not image_code_data: return jsonify(errno=RET.DATAERR, errmsg='验证码过期') # 判断验证码是否正确 if image_code.upper() != image_code_data.upper(): return jsonify(errno=RET.DATAERR, errmsg='验证码错误') # 删除redis中的图片验证码 try: redis_store.delete('image:%s' % image_code_id) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='数据库操作错误') # 生成一个随机的验证码 sms_code = '%06d' % random.randint(0, 999999) current_app.logger.debug(str(sms_code)) # 调用ccp发送短信验证码 # ccp = CCP() # result = ccp.send_template_sms(mobile, [sms_code, 5], 1) # if result == -1: # return jsonify(errno=RET.DATAERR, errmsg='短信发送失败') # 将短信保存到redis中 try: redis_store.set('sms_code:%s' % mobile, sms_code, constants.IMAGE_CODE_REDIS_EXPIRES) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='数据库操作错误') # 返回响应 return jsonify(errno=RET.OK, errmsg='发送成功')
def passport_register(): # 获取参数 # json_data = request.data # dict_data = json.loads(json_data) dict_data = request.json # 这句话等同于上面的两句话也可以是 dict_data = request.get_json() mobile = dict_data.get('mobile') sms_code = dict_data.get('sms_code') password = dict_data.get('password') # 校验为空参数 if not all([mobile, sms_code, password]): return jsonify(errno=RET.DATAERR, errmsg='参数不全') # 手机号作为key值取出存在redis中的短信 try: redis_sms_code = redis_store.get('sms_code:%s' % mobile) except Exception as e: current_app.logger.debug(e) return jsonify(errno=RET.DBERR, errmsg='短信验证码取出失败') # 判断短信验证码是否过期 if not redis_sms_code: return jsonify(errno=RET.PARAMERR, errmsg='参数过期') # 判断短信验证啊是否正确 if redis_sms_code != sms_code: return jsonify(errno=RET.DATAERR, errmsg='验证码错误') # 删除短信验证码 try: redis_store.delete('sms_code:%s' % mobile) except Exception as e: current_app.logger.debug(e) return jsonify(errno=RET.DBERR, errmsg='短信验证码删除失败') # 创建用户对象 user = User() # 创建用户属性 user.nick_name = mobile user.password = password user.mobile = mobile user.signature = '该用户很懒,什么也没有留下' # 保存数据到数据库 try: db.session.add(user) db.session.commit() except Exception as e: current_app.logger.debug(e) return jsonify(errno=RET.DBERR, errmsg='数据库提交失败') # 返回响应 return jsonify(errno=RET.OK, errmsg='注册成功')
def smscode(): """ 1.接受提交的参数 2.校验手机号码 3.根据传入的图片验证码去redis中取验证码内容 4.进行验证码比对 5.生成短信验证码内容并且发送 6.保存短信验证码到redis中 7.返回发送成功的响应 """ param_dict = request.json mobile = param_dict.get("mobile") image_code = param_dict.get("image_code") image_code_id = param_dict.get("image_code_id") if not all([mobile, image_code, image_code_id]): return jsonify(errno=RET.PARAMERR, errmsg='参数不全啊,sb!') # 校验手机号码 if not re.match('^1[3578][0-9]{9}$', mobile): return jsonify(error=RET.PARAMERR, errmsg='你输入的手机号码格式不对啊!!!') try: real_image_code = redis_store.get('ImageCode_' + image_code_id) if not real_image_code: return jsonify(errno=RET.NODATA, errmsg='验证码过期了!!') except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.NODATA, errmsg='验证码找不到数据') if image_code.lower() != real_image_code.decode().lower(): # 验证码输入错误 return jsonify(errno=RET.DATAERR, errmsg="验证码输入错误A!!!") sms_code = "%06d" % random.randint(0, 999999) # result = CCP().send_template_sms(mobile, [sms_code, constants.SMS_CODE_REDIS_EXPIRES/60], '1') # if result != 0: # return jsonify(errno=RET.THIRDERR, errmsg='短信验证码发送失败!!!!!!') current_app.logger.debug('短信验证码是:%s' % sms_code) try: redis_store.set('SMS' + mobile, sms_code, constants.SMS_CODE_REDIS_EXPIRES) except Exception as e: current_app.logger.error(e) return jsonify(errno=RET.DBERR, errmsg='保存短信验证码失败了!') return jsonify(errno=RET.OK, errmsg='发送成功了!!!!!!!!!!!!!!!!')
def sms_code(): # 手机号 mobile = request.json.get("mobile") # 用户输入的图片验证码内容 image_code = request.json.get("image_code") # 真实图片验证码编号 image_code_id = request.json.get("image_code_id") # 检查传递过来的参数是否全部有值 if not all([mobile, image_code, image_code_id]): return jsonify(errno=RET.PARAMERR, errmsg="请输入参数") if not re.match(r"1[3456789]\d{9}", mobile): return jsonify(errno=RET.PARAMERR, errmsg="请输入正确号码") #获取到redis里面的图片验证码 real_image_code = redis_store.get("image_id_" + image_code_id) # 判断验证码是否过期,过期了就拿不到,就是空的 if not real_image_code: return jsonify(errno=RET.NODATA, errmsg="图片验证码过期了") # 如果没过期,判断用户输入的验证码,转换成小写的进行判断用lower() if image_code.lower() != real_image_code.lower(): return jsonify(errno=RET.PARAMERR, errmsg="请输入正确验证码") # 通过随机生成一个六位数的验证码,用占位符%d random_sms_code = "%06d" % random.randint(0, 999999) # 在服务器的redis里面存储短信验证码,用来给用户进行检验操作 # 第一个参数,是电话号码作为key, # 第二个参数是短信验证码 # 第三个参数是有效时间 redis_store.set("sms_code_" + mobile, random_sms_code, constants.SMS_CODE_REDIS_EXPIRES) print("短信验证码内容=" + random_sms_code) # 发送短信 statuCode = CCP().send_template_sms(mobile, [random_sms_code, 5], 1) if statuCode != 0: return jsonify(errno=RET.THIRDERR, errmsg="短信发送失败") return jsonify(errno=RET.OK, errmsg="发送短信成功")