小程序教程

记账应用实战服务端之用户注册与登录基于ThinkPHP5描述

字号+ 作者: 来源: 2016-11-23 09:49 我要评论( )

微信小程序开发记账应用实战服务端之用户注册与登录基于ThinkPHP5描述1.下载ThinkPHP 5.0.1:http://www.thinkphp.cn/down/855.html2.安装 解压到站点根目录

http://localhost/thinkphp_5.0.1_core/public/访问,可以看到

:) ThinkPHP V5 十年磨一剑 - 为API开发设计的高性能框架 [ V5.0 版本由 七牛云 独家赞助发布 ] 新手快速入门完全开发手册

说明安装成功。

以上url等同于

http://localhost/thinkphp_5.0.1_core/public/index.php/index/index/index

第一个index是模块名,第二个index是控制器名,第三个index是方法名

出处参见config.php Line 60-67

  1.     // 默认模块名
  2.     'default_module'         => 'index',
  3.     // 禁止访问模块
  4.     'deny_module_list'       => ['common'],
  5.     // 默认控制器名
  6.     'default_controller'     => 'Index',
  7.     // 默认操作名
  8.     'default_action'         => 'index',
复制代码

3.用户登录控制器

目标是我们需要一个如下的接口,供我们提交用户信息

http://localhost/thinkphp_5.0.1_core/public/index.php/index/user/login

参数:openid

创建Controller

  1. <?php
  2. namespace app\index\controller;

  3. class User {
  4.     public function login() {
  5.         return 'login';
  6.     }
  7. }
复制代码

稍加改造
  1.     public function login() {
  2.         header("Content-type: application/json");
  3.         $response = [
  4.             'code' => 200,
  5.             'msg' => '登录成功',
  6.             'data' => ['accessToken' => '14c4b06b824ec593239362517f538b29']
  7.         ];
  8.         return json_encode($response);
  9.     }
复制代码

输出json格式

header("Content-type: application/json");

无效!

查看文档,需要改配置

修改第36行

  1. // 默认输出类型
  2. 'default_return_type'    => 'json',
复制代码

4.用户登录模型
  1. <?php
  2. namespace app\index\model;
  3. use think\Model;

  4. class User extends Model{

  5. }
复制代码

5. 配置数据库信息

进入database.php

  1. return [
  2.     // 数据库类型
  3.     'type'           => 'mysql',
  4.     // 服务器地址
  5.     'hostname'       => '127.0.0.1',
  6.     // 数据库名
  7.     'database'       => '',
  8.     // 用户名
  9.     'username'       => 'root',
  10.     // 密码
  11.     'password'       => '',
  12. ];
复制代码

6. 建表
  1. CREATE TABLE `user` (
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,
  3.   `username` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  4.   `openid` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  5.   `accessToken` char(32) COLLATE utf8_unicode_ci DEFAULT NULL,
  6.   PRIMARY KEY (`id`),
  7.   UNIQUE KEY `username` (`username`),
  8. ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
复制代码

7. 获取用户输入
  1. // 引入命名空间
  2. use \think\Request;

  3. $openid = Request::instance()->post('openid');
  4. echo $openid;
复制代码

使用PostMan 测试

输出"灵犀网络"字样

8. 查询是否用户是否已经存在

通过openid查询数据库,判断用户是否已经注册

如有,返回用户的id,accessToken,username

  1.         // 判断是否已经注册
  2.         $user = \app\index\model\User::get(['openid' => $openid]);
  3.         if (!empty($user)) {
  4.             $response = [
  5.                 'code' => 200,
  6.                 'msg' => '登录成功',
  7.                 'data' => $user
  8.             ];
  9.             return $response;
  10.         }
复制代码

9. 插入新用户

创建并返回用户信息

  1.         //插入一行数据
  2.         $user = new \app\index\model\User();
  3.         // 由于没有内测号,拿不到openid,用res.nickname代替
  4.         $user->openid = $openid;
  5.         // 用户名即昵称
  6.         $user->username = $openid;
  7.         // 生成一个accessToken
  8.         $user->accessToken = md5(time().'mysalt');
  9.         if ($user->save()) {
  10.             $response = [
  11.                 'code' => 200,
  12.                 'msg' => '注册成功',
  13.                 'data' => $user
  14.             ];
  15.         }
  16.         // 如果配置了返回为json不必经过toArray()处理后,就能得到一个是纯净的数组,不然是一个对象,包含了诸多信息
  17.         return $response;
复制代码

10. json输入用户信息,供小程序本地缓存,主要是accessToken

配置文件config.php指定了返回类型是json的话,不必通过$user->toArray(),即为纯净的array。而不是如下的对象格式。

  1. object(app\index\model\User)#4 (27) {
  2.   ["connection":protected]=>
  3.   array(0) {
  4.   }
  5.   ["query":protected]=>
  6.   NULL
  7.   ["name":protected]=>
  8.   string(4) "User"
  9.   ["table":protected]=>
  10.   NULL
  11.   ["class":protected]=>
  12.   string(20) "app\index\model\User"
  13.   ["error":protected]=>
  14.   NULL
  15.   ["validate":protected]=>
  16.   NULL
  17.   ["pk":protected]=>
  18.   NULL
  19.   ["field":protected]=>
  20.   array(0) {
  21.   }
  22.   ["readonly":protected]=>
  23.   array(0) {
  24.   }
  25.   ["visible":protected]=>
  26.   array(0) {
  27.   }
  28.   ["hidden":protected]=>
  29.   array(0) {
  30.   }
  31.   ["append":protected]=>
  32.   array(0) {
  33.   }
  34.   ["data":protected]=>
  35.   array(3) {
  36.     ["openid"]=>
  37.     string(14) "灵犀网络12"
  38.     ["username"]=>
  39.     string(14) "灵犀网络12"
  40.     ["accessToken"]=>
  41.     string(32) "b6c643a133c531728d9829db0d756eaf"
  42.   }
  43.   ["change":protected]=>
  44.   array(3) {
  45.     [0]=>
  46.     string(6) "openid"
  47.     [1]=>
  48.     string(8) "username"
  49.     [2]=>
  50.     string(11) "accessToken"
  51.   }
  52.   ["auto":protected]=>
  53.   array(0) {
  54.   }
  55.   ["insert":protected]=>
  56.   array(0) {
  57.   }
  58.   ["update":protected]=>
  59.   array(0) {
  60.   }
  61.   ["autoWriteTimestamp":protected]=>
  62.   bool(false)
  63.   ["createTime":protected]=>
  64.   string(11) "create_time"
  65.   ["updateTime":protected]=>
  66.   string(11) "update_time"
  67.   ["dateFormat":protected]=>
  68.   string(11) "Y-m-d H:i:s"
  69.   ["type":protected]=>
  70.   array(0) {
  71.   }
  72.   ["isUpdate":protected]=>
  73.   bool(false)
  74.   ["updateWhere":protected]=>
  75.   NULL
  76.   ["relation":protected]=>
  77.   NULL
  78.   ["failException":protected]=>
  79.   bool(false)
  80. }
复制代码


 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 微信小程序 轮播图 swiper图片组件

    微信小程序 轮播图 swiper图片组件

    2016-11-23 09:49

  • 微信小程序 开发 微信开发者工具 快捷键

    微信小程序 开发 微信开发者工具 快捷键

    2016-11-23 09:49

  • 微信小程序 页面跳转 传递参数

    微信小程序 页面跳转 传递参数

    2016-11-23 09:49

  • 微信小程序 如何获取时间

    微信小程序 如何获取时间

    2016-11-23 09:49

网友点评