3.3 数据库登录和json规范返回
第 23 节 / 共 46 节
课程:ThinkPHP
首先登陆的数据库表是user,它的结构是:

username是主键,也是登陆用的用户名
password是密码
role是角色,0是普通学生,9是管理员,4是教师
nickname是昵称,可以重复
create_date是用户注册的日期
is_valid用户是否有效,1为有效,0无效
首先是use的模型,找到app/model,新建User.php,最好是用以前Users.php修改:
<?phpnamespace app\model;use think\Model;// 模型类必须继承think\Model类class User extends Model { // 如果主键名不为id,则必须手工指定主键名称 protected $pk = 'username'; // 为当前模型指定表名称,如果类名与表名一致,则可以不用指定 protected $name = 'user'; // 再定义一个查询所有用户表数据的方法,返回所有必须使用select方法 public function findAll() { $users = $this->select(); return $users; } public function findPwdByUsername($username) { // where条件查询,find()获取单条数据 $user = $this->where('username', $username)->find(); // 如果查到用户,返回密码,否则返回null return $user ? $user->password : null; } public function findByUsername($username) { $user = $this->where('username', $username)->find(); return $user; // 直接以关联数组返回一行数据 }}然后是app/controller/Demo.php的login函数(原来的logi函数需要改名):
public function login(){ //取出post请求发过来的数据 $data = input('post.'); //新建一个user对象,用于数据库操作 $user = new \app\model\User(); //根据发过来的用户名查询数据库 $user=$user->findByUsername($data['username']); //如果用户不存 if($user==null){ return json([ "code" => "400", "info" => "用户名不存在", "data" => null ]); } //用户发过来的密码不等于数据库查出来的密码 if($data['password'] != $user['password']){ return json([ "code" => "401", "info" => "密码错误", "data" => null ]); } //把密码改成空,防止发过去浏览器泄露密码 $user['password']=''; return json([ "code" => "200", "info" => "", "data" => [ "course" => "1", "user" => $user, "url" => "main" ] ]); }由于整个学习平台的后台返回形式都是code、info以及data的json格式,在ThinkPHP8中直接在控制器中返回一个关联数组即可,无需封装单独的类:
// ThinkPHP8控制器返回数组自动转为jsonreturn json([ "code" => "200", "info" => "", "data" => $data]);在ThinkPHP8控制器中,直接返回数组即可自动转为json,不必手动构建复杂json结构:
// Route::get('test', 'demo/test');public function test(){ return json([ "code" => "200", "info" => "测试", "data" => [ "nickname" => "PHP", "username" => "username" ] ]);}使用PHP数组和json函数,重写上一节的登录。
《ThinkPHP》课程目录
介绍PHP框架ThinkPHP6
- 第1章 配置环境
- 1.1 第一个ThinkPHP8项目
- 1.2 Composer项目结构介绍
- 1.3 启动项目
- 1.4 ThinkPHP8项目的部署
- 1.5 idea教育版免费一年获取办法
- 第2章 基本特性
- 2.1 响应HTTP请求
- 2.2 响应html
- 2.3 登录-前端
- 2.4 登录-后台
- 2.5 数据库基本操作
- 2.6 模型支持
- 2.7 登录状态和session
- 2.8 注册
- 2.9 主页文章列表
- 2.10 单篇文章内容
- 2.11 完善文章页面
- 2.12 文件上传
- 第3章 实训
- 3.1 项目准备
- 3.2 登录
- 3.3 数据库登录和json规范返回
- 3.4 注册
- 3.5 查询课程
- 3.6 个人信息
- 3.7 修改昵称
- 3.8 *主页信息
- 3.9 统计
- 3.10 学习-侧边导航
- 3.11 *学习-右边内容
- 3.12 管理-课程
- 3.13 管理-班级
- 3.14 管理-班级-学生换班
- 3.15 管理-班级-查找学生
- 第4章 git代码管理
- 4.1 建立代码库
- 4.2 代码管理提交、推送和拉取
- 4.3 从云克隆代码
- 第5章 项目重构成spirngboot
- 5.1 项目技术介绍
- 5.2 创建一个ThinkPHP8项目
- 5.4 移入网页和PHP代码
- 5.5 模型和服务
- 5.7 测试
- 第6章 nginx