一个简单的注册登录功能-学习PHP+MySQL操作

这篇文章通过实现一个简单的注册登录功能来过一遍php和MySQL的操作命令,目的是熟悉整个数据库操作流程和注册登录的设计方法。

注册登录功能分析

假定客户端已经实现,那么Server需要有什么模块来实现整个注册登录功能呢?

注册模块

  • 注册模块检查注册信息是否合法
  • 注册模块检查用户名是否已存在
  • 注册模块将注册的用户写入数据库

登录模块

  • 登录模块将客户端输入和数据库比对
  • 比对正确,登录模块返回登录成功信息,登录Session设置
  • 比对错误,登录模块返回登录失败信息

登出模块

  • 注销Session

这篇文章计划实现上面这些功能,下面分步骤进行。

注册用户表设计

user(uid, email, password, nick_name, avatar, description, last_login_time, create_time)

客户端注册页面

略过,用iOS实现

PHP注册-代码总体摘要

下面只写调用顺序,不写实现,这样可以更清晰的知道调用的顺序

PHP注册-写代码前,创建数据库和表并部署

最开始实现注册的时候,数据库的创建和建表我是直接写在了php逻辑里,太山寨,现在已经改为提前部署。就是php只管操作数据库就好了,我使用了MySQLWorkbench软件来创建可视化的数据库名字是user,表名字是user_info。操作步骤就是链接数据库然后创建schema然后添加表,就会发现/usr/local/var/mysql/下面多了user文件夹,就是创建的数据库,使用的时候直接连接选中就好了,真是比自己创建太方便了。

创建的uesr数据库会作为文件夹形式存储在mysql安装目录下,我是用brew安装,路径就是/usr/local/var/mysql/user,删除这个文件夹就是删除了user数据库,但是不建议直接删除应该用drop

表格式:

PHP注册-输出设置,定义常量,接受客户端注册信息

这一步是设置一些常量,比如数据库用户名密码之类的,并且创建了变量存储客户端发来的注册信息,还有一点很重要就是返回格式是Json。

PHP注册-注册信息合法判断

这一步包含了邮箱,密码,昵称的格式合法判断,作为第一步筛选,如果输入不合法就不往下进行

PHP注册-连接,选中数据库

这里是数据库的初始化工作,连接和选中数据库,是对其操作的基础,第一步

PHP注册-创建数据库

如果user数据库不存在,就创建数据库,创建的uesr数据库会作为文件夹形式存储在mysql安装目录下,我是用brew安装,路径就是/usr/local/var/mysql/user,删除这个文件夹就是删除了user数据库

PHP注册-创建数据库user表

创建完数据库后,下一步就是建表,建表的时候考虑了一些基本数据类型,值得注意的是id是自增的,create_time是数据库的TimeStamp类型,会自动添加

PHP注册-检查用户名和昵称是否已经存在

这一步在最开始说过了,不光要看用户名和昵称是否合法,还要防止重复的用户名和昵称出现,这里用到了数据库的查询操作

PHP注册-插入数据,进行注册

经过了合法校验,创建数据库,判断重复名字等步骤后,这一步才真正执行了注册操作,也就是数据库的插入操作

PHP注册-关闭数据库

这里目前我发现不写也不会报错,todo调研

PHP注册-输出Json

上面的很多方法使用了registerResultOutput这个方法,作用就是输出JSON,会把errorMsg和state组织成JSON返回给客户端,state=0说明没报错,state=1说明有错误,同时errorMsg也有值

写到这里,注册的流程就完成了。

登录模块实现(异常简单版)

  • 异常简单版的登录流程:
  • server收到客户端用户名和密码
  • server把密码MD5
  • server把用户名和MD5的密码进行user_info表查询,找是否匹配
  • 匹配,返回用户的ID和token

上面的步骤没有加salt,没有redis的hash映射,没有https,只是最简单的流程,登录成功后会直接带用户的token和id,登陆成功后页面使用id来请求一次拉取用户信息的接口,让用户知道登陆成功了,这个另说是另一个功能了,下面直接贴代码

到这里,最简单的登录就完成了。

todo 更安全的登录

退出登录模块