#微信小程序開發記帳應用實戰服務端之用戶註冊與登陸基於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,陸續還將推出更多做品。