一、验证用户名
1.前台
获取用户输入的用户名,并判断是否为空,并将用户名作为一组数据传入后台
2.后台
连接mysql,查询此用户名在数据库内的个数,并返回给前台
3.二次返回前台
如果后台返回的数据是0,说明用户名在数据库内不存在,是一个可用的用户名,如果返回的是1,则说明该用户名已经存在数据库内,不能使用。
二、验证手机号
原理与一用户名类似,不在赘述
三、验证码
1.前台
用户点击进入注册页面,或者点击图片时,并跟新uuid,将新的uuid作为参数传入后台。
2.后台
后台接收这个uuid,然后调用captcha生成图片和图形验证码,连接redis,把uuid当成外键,验证码作为值传入redis等待后面的校验。然后把图片作为返回值,渲染到img标签
四、短信发送
1.先获取用户输入的手机号
判断手机号是否合法,判断手机号是否注册
2.获取用户输入的图形验证码
判断用户是否输入图形验证码
把用户的到的图形验证码,图形验证码的uuid,手机号一起用ajax发送到后台让后台判断
3.后台判断
在后台判断此手机号是否合格,图形验证码是否合格并将数据传入forms进行数据清洗,
4.数据清洗
判断手机,用户输入的图片验证码是否合格。
如果合格判断图形验证码与后台存在redis的图像验证码是否相同,如果相同就将数据库内的外键删除。
判断用户在60s内是否多次发送。
如果都可以就退出数据清洗。
5.二次返回后台
构建一个新的外键,来存储生成的验证码,把它存到reids,过期时间为5分钟,利用雨布模块celery_tasks来进行短信发送,存入手机号,验证码,过期时间和模板信息,如果发送成功返回发送成功,如果不成功就返回相应的错误(这里云通讯只能使用自己的号码)
6.返回前台
如果短信发送成功,就开始在点击按钮上出现60s倒计时,提醒用户这时间是不能点的。如果错误,则报出相应的错误
五、注册
1.前台接受数据
接受以下参数:
用户名,密码1,密码2,手机号和短信验证按
当用户点击注册时
2.前台判断
首先阻止默认提交操作,然后判断用户名是否已经注册,手机号是否已经注册,密码是否为空和确认密码长度是否为6-20位,并判断两次面是否一致和短信验证码是否Wie6位数。
3.判断完成,创建请求参数
将用户名,密码1,密码2,手机号,短信验证码创建成一个参数,等下通过ajax传入后台进行校验。
4.后台校验
接受前台返回的数据,把数据放进forms进行数据清洗
5.数据清洗
判断各个参数是否合格,如果合格,判断用户名和手机号是否注册,如果都是对的,就判断两次密码是否一致,如果一致,连接reids,查看用户输入的验证码是否和redis里面的验证码相同。如果相同,退出数据清洗,如果以上有一个不正确的就返回相应的错误,退出数据清洗
6.二次返回后台
如果数据清洗成功,就将用户名,手机号和密码存入到mysql,并返回注册成功如果有错误则报相应的错误
7.二次返回前台
如果注册成功,就显示注册成功,将页面重定向到登录页面,如果出错则返回相应的错误
六、登录登出
3.1 登录
1.前台获取参数
获取一下参数:
用户名或者手机号
密码
2.前台判断
首先阻止默认提交操作,判断用户账号是否为空,并判断手机的格式是否合法,并判断密码是否为空,并判断面是否为6-20位,并判断用户是否勾选了记住我。
3.判断完成。创建请求参数
将账户,密码和是否勾选作为参数通过ajax传入到后台进行校验
4.后台校验
获取前台返回的值,并将获得到的数据放入forms进行数据清洗。
5.数据清洗
先判断密码是否合格,然后复用request(后面要用),判断账户是否为空,并判断如果是手机,手机格式是否合法。然后判断账号是用户名还是手机号,使用check_password来判断用户输入的密码是否和mysql里的面相同。如果相同,就进行登录会到后台
6.二次回到后台
如果数据清洗成功,则返回登陆成功的信息,并返回到前台。
7.二次返回前台
如果登录成功,将页面重定向到首页或者用户之前访问的页面。
并且在页面上显示用户的用户名,如果是超级用户,并显示后台管理
如果上面的步骤出现问题就返回相应的问题由前台输出。
3.2 登出
当用户点击退出登录时,自动调用logout函数,清除用户的cookie并且将页面重定向到设定好的页面。
如果想获取更多有关python的信息,和想玩python制作的小程序,可以关注微信公众号(dreamspy)。我们一起用python改变世界,一起用python创造梦想。