#微信小程序开发记帐应用实战服务端之用户注册与登陆基于ThinkPHP5描述php
#1.下载ThinkPHP 5.0.1:http://www.thinkphp.cn/down/855.htmlhtml
#2.安装 解压到站点根目录mysql
http://localhost/thinkphp_5.0.1_core/public/访问,能够看到sql
:) ThinkPHP V5 十年磨一剑 - 为API开发设计的高性能框架 [ V5.0 版本由 七牛云 独家赞助发布 ] 新手快速入门彻底开发手册thinkphp
说明安装成功。数据库
以上url等同于json
http://localhost/thinkphp_5.0.1_core/public/index.php/index/index/index小程序
第一个index是模块名,第二个index是控制器名,第三个index是方法名微信小程序
出处参见config.php Line 60-67数组
// 默认模块名 'default_module' => 'index', // 禁止访问模块 'deny_module_list' => ['common'], // 默认控制器名 'default_controller' => 'Index', // 默认操做名 'default_action' => 'index',
#3.用户登陆控制器
目标是咱们须要一个以下的接口,供咱们提交用户信息
http://localhost/thinkphp_5.0.1_core/public/index.php/index/user/login
参数:openid
建立Controller
<?php namespace app\index\controller; class User { public function login() { return 'login'; } }
稍加改造
public function login() { header("Content-type: application/json"); $response = [ 'code' => 200, 'msg' => '登陆成功', 'data' => ['accessToken' => '14c4b06b824ec593239362517f538b29'] ]; return json_encode($response); }
输出json格式
header("Content-type: application/json");
无效!
查看文档,须要改配置
修改第36行
// 默认输出类型 'default_return_type' => 'json',
#4.用户登陆模型
<?php namespace app\index\model; use think\Model; class User extends Model{ }
#5. 配置数据库信息
进入database.php
return [ // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '127.0.0.1', // 数据库名 'database' => '', // 用户名 'username' => 'root', // 密码 'password' => '', ];
#6. 建表
CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL, `openid` varchar(255) COLLATE utf8_unicode_ci NOT NULL, `accessToken` char(32) COLLATE utf8_unicode_ci DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`), ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
#7. 获取用户输入
// 引入命名空间 use \think\Request; $openid = Request::instance()->post('openid'); echo $openid;
使用PostMan 测试
输出"灵犀网络"字样
#8. 查询是否用户是否已经存在
经过openid查询数据库,判断用户是否已经注册
若有,返回用户的id,accessToken,username
// 判断是否已经注册 $user = \app\index\model\User::get(['openid' => $openid]); if (!empty($user)) { $response = [ 'code' => 200, 'msg' => '登陆成功', 'data' => $user ]; return $response; }
#9. 插入新用户
建立并返回用户信息
//插入一行数据 $user = new \app\index\model\User(); // 因为没有内测号,拿不到openid,用res.nickname代替 $user->openid = $openid; // 用户名即昵称 $user->username = $openid; // 生成一个accessToken $user->accessToken = md5(time().'mysalt'); if ($user->save()) { $response = [ 'code' => 200, 'msg' => '注册成功', 'data' => $user ]; } // 若是配置了返回为json没必要通过toArray()处理后,就能获得一个是纯净的数组,否则是一个对象,包含了诸多信息 return $response;
#10. json输入用户信息,供小程序本地缓存,主要是accessToken
配置文件config.php指定了返回类型是json的话,没必要经过$user->toArray(),即为纯净的array。而不是以下的对象格式。
object(app\index\model\User)#4 (27) { ["connection":protected]=> array(0) { } ["query":protected]=> NULL ["name":protected]=> string(4) "User" ["table":protected]=> NULL ["class":protected]=> string(20) "app\index\model\User" ["error":protected]=> NULL ["validate":protected]=> NULL ["pk":protected]=> NULL ["field":protected]=> array(0) { } ["readonly":protected]=> array(0) { } ["visible":protected]=> array(0) { } ["hidden":protected]=> array(0) { } ["append":protected]=> array(0) { } ["data":protected]=> array(3) { ["openid"]=> string(14) "灵犀网络12" ["username"]=> string(14) "灵犀网络12" ["accessToken"]=> string(32) "b6c643a133c531728d9829db0d756eaf" } ["change":protected]=> array(3) { [0]=> string(6) "openid" [1]=> string(8) "username" [2]=> string(11) "accessToken" } ["auto":protected]=> array(0) { } ["insert":protected]=> array(0) { } ["update":protected]=> array(0) { } ["autoWriteTimestamp":protected]=> bool(false) ["createTime":protected]=> string(11) "create_time" ["updateTime":protected]=> string(11) "update_time" ["dateFormat":protected]=> string(11) "Y-m-d H:i:s" ["type":protected]=> array(0) { } ["isUpdate":protected]=> bool(false) ["updateWhere":protected]=> NULL ["relation":protected]=> NULL ["failException":protected]=> bool(false) }
源码下载:关注下方的公众号->回复数字1008
对小程序开发有趣的朋友关注公众号: huangxiujie85,QQ群: 581513218,微信: small_application,陆续还将推出更多做品。