微信小程序開發記帳應用實戰服務端之用戶註冊與登陸基於ThinkPHP5描述

#微信小程序開發記帳應用實戰服務端之用戶註冊與登陸基於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 測試

輸出"靈犀網絡"字樣

圖1

#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)
}

圖2

源碼下載:關注下方的公衆號->回覆數字1008

對小程序開發有趣的朋友關注公衆號: huangxiujie85,QQ羣: 581513218,微信: small_application,陸續還將推出更多做品。

公衆號

相關文章
相關標籤/搜索