婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > ThinkPHP6.0如何利用自定義驗證規則規范的實現登陸

ThinkPHP6.0如何利用自定義驗證規則規范的實現登陸

熱門標簽:電銷機器人便宜的有嗎 地圖標注視頻廣告入駐 ai電話機器人加盟代理 OMG地圖標注app 招標自動語音外呼系統 黔江400電話如何辦理 400電話鄭州申請 gps 地圖標注軟件 中原區電話機器人價格

1.寫在前面

這學期因為各種課內考試,競賽活動,項目,(和女朋友約會 )🤭等消耗了大量時間,博客沒怎么更新,上次更新博客還是2個月之前

實現效果如圖

2.ThinkPHP中的MVC

M: Model 模型層(與數據庫交互的持久層)
V: View 視圖層(前端html,css,js)
C: Controller 控制器層

這里可以再單獨封裝一層 common 公共層,用于處理公用業務,或者是封裝統一返回給前端的JSON數據格式。
控制器層 的正確寫法是只接受參數,然后交給Model層去處理業務;

3.登陸思路

controller層接受username,password參數,交給Model層處理,Model層先將接受的username,password交給我們的自定義驗證器去驗證,驗證通過后返回成功登陸標志, 這個標志可以任意,登陸成功就返回1,否則返回錯誤消息,返回給 controller 層,controller 層簡單判斷這個標志后,就傳遞JSON數據給前端,前端利用 controller 層傳遞過去的JSON數據中的 url 地址進行跳轉即可

4.前端發起請求

!DOCTYPE html>
html lang="en">
head>
 meta charset="UTF-8">
 meta name="viewport" content="width=device-width, initial-scale=1.0;">
 link rel="stylesheet"  rel="external nofollow" >
 link rel="stylesheet" type="text/css" href="/static/css/me.css" rel="external nofollow" >
 script src="/static/js/jquery-3.5.1.min.js">/script>
 script src="https://cdn.jsdelivr.net/semantic-ui/2.2.10/semantic.min.js">/script>
 title>博客管理登陸/title>
/head>
body>
input id="username" type="text" name="username" placeholder="登陸用戶名">
input id="password" type="password" name="password" placeholder="密碼">
script>
 $('#loginBtn').click(function () {
  let username = $('#username').val();
  let password = $('#password').val();
  $.ajax({
   url:"{:url('admin.login/login')}",
   type: 'post',
   data: {"username":username,"password":password},
   dataType: 'JSON',
   success: function (data) {
    let realData = JSON.stringify(data)
    data=eval("("+realData+")");//通過eval將()中的字符串以json形式執行
    if(data.code != 1) {
     alert(data.msg);
    } else {
    	window.location.href = data.data
    }
   },
   error: function (e) {
    window.location.href='/error/to500Page'
   }
  })
 })
/script>
/body>
/html>

5.Common.php

?php
// 應用公共文件
//show方法封裝統一返回給前端的JSON數據格式
function show($code, $msg = 'error', $data = [],$httpStatus = 200){
 $result = [
  "code" => $code,
  "msg" => $msg,
  "data" => $data
 ];
 return json($result,$httpStatus);
}

6.LoginController.php

?php


namespace app\controller\admin;

use app\BaseController;
use think\facade\Session;
use think\Request;
use \app\model\User;

class Login extends BaseController
{
 protected $request;

 public function index(){
  return view('admin/login');
 }

 public function toAdminIndex(){
  return view('admin/index');
 }

 public function logout(){
  Session::delete('user');
  return view('admin/login');
 }

 public function __construct(Request $request){
  $this->request = $request;
  $this->request->header('Content-Type:text/html; charset=utf-8');
 }

 public function login(){
  $user = new User();
  $username = $this->request->param('username');
  $password = $this->request->param('password');
  $data = [
   'username' => $username,
   'password' => $password,
   'dto'  => ['username'=>$username,'password'=>$password], // dto 為一個數組類型
  ];
  $flag = $user->login($data); // $flag != 1 則返回錯誤消息
  if($flag != 1){
  //show 方法在common.php 中,封裝統一返回前端數據格式{"code":-1,"msg":$flag,"data":null}
   return show(-1,$flag,null); 
  }
  //能到這一步說明驗證通過,將用戶信息存入 Session 中存儲起來
  Session::set('user',$user->getUserByUserName($username));
  // url: '/admin.login/toAdminIndex'
  return show(1,'登陸成功!','/admin.login/toAdminIndex');
 }

}

7.UserModel.php

?php


namespace app\model;


use think\exception\ValidateException;
use think\facade\Db;
use think\Model;

class User extends Model
{

 protected $table = 'user';

 public function getUserByUserName($username){
  return Db::table('user')->where('username','=',$username)->find();
 }

 public function login($data){
  try{
  //Login 是登陸驗證器
   validate(\app\validate\Login::class)->check($data);
  } catch (ValidateException $e) {
  // 驗證不通過則返回錯誤消息
  // 錯誤消息比如: "用戶名不能為空!","用戶名或密碼錯誤!"等
   return $e->getError();
  }
  	//驗證通過返回1,也可以是其他數字,任意,只要和 controller層對接好就行
  return 1;
 }

}

8.LoginValidate.php

?php
declare (strict_types = 1);

namespace app\validate;

use app\model\User;
use think\Validate;

class Login extends Validate
{
 /**
  * 定義驗證規則
  * 格式:'字段名' => ['規則1','規則2'...]
  *
  * @var array
  */
 protected $rule = [
  'username|用戶名' => 'require',
  'password|密碼' => 'require',
  'dto|用戶名或密碼' => 'checkUserExist', //checkUserExist為自定義驗證方法
 ];

 /**
  * 定義錯誤信息
  * 格式:'字段名.規則名' => '錯誤信息'
  *
  * @var array
  */
 protected $message = [
  'dto.checkUserExist' => '用戶名或密碼錯誤!'
 ];

	// $value 為 [
	//			 "username" => username,
	//   "password" => password,
	//   ]
 public function checkUserExist($value){
  $model = new User();
  $user = $model->getUserByUserName($value['username']);
  if($user == null){
   return false;
  }
  //前端傳過來的密碼需要 加密后 才可以正確與數據庫中的密碼匹配
  if($user['password'] != md5($value['password'])){
   return false;
  }
  return true;
 }

}

結尾

ThinkPHP6.0使用了嶄新的門面設計模式,對于設計模式具體在應用到工程代碼中的能力還需要進一步的提高

到此這篇關于ThinkPHP6.0如何利用自定義驗證規則規范的實現登陸的文章就介紹到這了,更多相關ThinkPHP驗證登陸內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • PHP Pipeline 實現中間件的示例代碼
  • Golang之casbin權限管理的實現
  • thinkphp5.1的model模型自動更新update_time字段實例講解
  • Thinkphp5.1獲取項目根目錄以及子目錄路徑的方法實例講解
  • Thinkphp使用Zxing擴展庫解析二維碼內容圖文講解
  • laravel與thinkphp之間的區別與優缺點
  • ThinkPHP的標簽制作實例講解
  • thinkphp的鉤子的兩種配置和兩種調用方法
  • 如何使用Casbin作為ThinkPHP的權限控制中間件

標簽:那曲 日照 北京 哈密 孝感 阿里 池州 濟源

巨人網絡通訊聲明:本文標題《ThinkPHP6.0如何利用自定義驗證規則規范的實現登陸》,本文關鍵詞  ThinkPHP6.0,如何,利用,自定義,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《ThinkPHP6.0如何利用自定義驗證規則規范的實現登陸》相關的同類信息!
  • 本頁收集關于ThinkPHP6.0如何利用自定義驗證規則規范的實現登陸的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    精品久久久久久久人人人人传媒| 激情小说欧美图片| 看片的网站亚洲| 国产高清无密码一区二区三区| 成人a免费在线看| 色妹子一区二区| 欧美一区二区三区人| 精品国产成人系列| 国产精品对白交换视频| 亚洲国产日韩a在线播放性色| 日本一道高清亚洲日美韩| 国产成人精品亚洲777人妖| 91福利在线免费观看| 欧美sm美女调教| 亚洲女同ⅹxx女同tv| 玖玖九九国产精品| 在线影院国内精品| 国产偷国产偷精品高清尤物 | 国产精品1024| 91啪亚洲精品| 精品久久99ma| 亚洲午夜一区二区| 处破女av一区二区| 91麻豆精品久久久久蜜臀| 最新热久久免费视频| 青青草国产成人99久久| 99免费精品在线观看| 精品国产乱码久久久久久老虎 | 欧美三级日韩三级| 国产精品五月天| 日韩vs国产vs欧美| 91亚洲精品久久久蜜桃网站| 欧美成人高清电影在线| 亚洲精品视频自拍| 国产xxx精品视频大全| 91精品国产综合久久香蕉的特点| 国产精品视频麻豆| 国产自产视频一区二区三区| 色狠狠色狠狠综合| 国产精品国产a| 国产一区高清在线| 91精品国产欧美一区二区18| 亚洲男帅同性gay1069| 成人一区二区三区| 久久亚洲捆绑美女| 免费看欧美女人艹b| 欧美色综合天天久久综合精品| 国产精品少妇自拍| 国产精品一卡二卡在线观看| 日韩一级欧美一级| 视频在线观看一区二区三区| 欧美在线观看一区二区| 亚洲欧洲一区二区在线播放| 国产一区欧美一区| 日韩欧美亚洲另类制服综合在线| 亚洲自拍偷拍欧美| 91天堂素人约啪| 国产欧美日韩在线观看| 精品一区二区三区影院在线午夜| 欧美精品久久99久久在免费线 | 欧美人与性动xxxx| 亚洲国产乱码最新视频| 色婷婷精品久久二区二区蜜臀av| 国产精品久久久久久亚洲伦| 高清在线观看日韩| 久久精品网站免费观看| 国产精品1024| 久久久久久久免费视频了| 久久精品av麻豆的观看方式| 欧美一区二区三区在线电影| 日韩中文字幕亚洲一区二区va在线| 欧美日韩国产在线观看| 亚洲国产精品久久人人爱蜜臀| 一本大道久久a久久精品综合| 97精品国产露脸对白| 中文字幕欧美区| 成人精品国产福利| 日韩美女视频一区| 91小视频在线| 一区二区三区欧美视频| 在线观看亚洲成人| 亚洲午夜国产一区99re久久| 欧美日韩一区二区不卡| 日本欧美加勒比视频| 日韩欧美在线观看一区二区三区| 紧缚捆绑精品一区二区| 欧美国产日韩精品免费观看| 99久久精品免费精品国产| 亚洲男人的天堂网| 欧美日韩成人一区二区| 日本视频中文字幕一区二区三区| 日韩一区二区影院| 国产成都精品91一区二区三| 国产精品久久久久一区| 色婷婷综合五月| 亚洲mv在线观看| 欧美成人高清电影在线| 成人激情免费视频| 亚洲综合一区二区三区| 欧美一区欧美二区| 国产成人午夜99999| 亚洲黄色免费网站| 欧美一区二区三区视频免费| 国产99一区视频免费| 亚洲视频免费看| 欧美一区二区三区精品| 高清不卡一二三区| 亚洲国产精品久久久久秋霞影院| 日韩精品一区二区三区视频| eeuss鲁片一区二区三区在线看| 伊人婷婷欧美激情| 精品欧美一区二区在线观看| 99久久er热在这里只有精品15| 亚洲国产裸拍裸体视频在线观看乱了 | 国产欧美va欧美不卡在线| 91无套直看片红桃| 麻豆免费看一区二区三区| 中文字幕不卡三区| 欧美日韩在线精品一区二区三区激情 | 欧美精品vⅰdeose4hd| 国产一区二区久久| 亚洲一卡二卡三卡四卡五卡| 久久免费美女视频| 欧美在线短视频| 国产一区二区福利| 亚洲一区在线播放| 久久麻豆一区二区| 欧美男人的天堂一二区| 国产91精品欧美| 强制捆绑调教一区二区| 亚洲欧美国产三级| 亚洲精品在线电影| 欧美性生交片4| 福利电影一区二区| 麻豆成人91精品二区三区| 一区二区三区免费网站| 精品蜜桃在线看| 欧洲一区二区三区在线| 国产风韵犹存在线视精品| 性做久久久久久| 亚洲私人影院在线观看| 久久久精品国产99久久精品芒果| 欧美美女视频在线观看| 99久久免费视频.com| 国产一区二区0| 日本aⅴ免费视频一区二区三区 | 欧美三级视频在线观看| 国产suv精品一区二区6| 裸体一区二区三区| 五月天中文字幕一区二区| 亚洲欧美经典视频| 中文字幕精品—区二区四季| 精品久久人人做人人爱| 欧美精品第1页| 欧美视频你懂的| 色久综合一二码| 91性感美女视频| av午夜一区麻豆| 国产成人免费av在线| 精品在线播放免费| 日韩综合在线视频| 亚洲高清三级视频| 亚洲午夜电影在线| 亚洲电影欧美电影有声小说| 樱桃视频在线观看一区| 亚洲国产精品ⅴa在线观看| 亚洲精品在线三区| 精品国产一区二区三区av性色| 欧美日韩中文精品| 欧美日韩一区在线观看| 在线亚洲免费视频| 色综合久久中文综合久久牛| 色综合久久综合网欧美综合网 | 亚洲国产一区视频| 一区二区三区中文字幕电影| 亚洲欧美日韩国产一区二区三区 | 色国产精品一区在线观看| 99久久精品国产毛片| 色综合视频在线观看| 色94色欧美sute亚洲线路一久| 日本道在线观看一区二区| 色网站国产精品| 欧美日韩三级一区二区| 在线播放视频一区| 欧美videos大乳护士334| 2023国产一二三区日本精品2022| 久久久久青草大香线综合精品| 国产视频一区二区在线观看| 国产欧美在线观看一区| 国产精品免费aⅴ片在线观看| 中文无字幕一区二区三区| 日韩一区在线看| 亚洲黄色免费网站| 日本午夜精品视频在线观看 | 中文字幕二三区不卡| 亚洲视频一区二区免费在线观看| 亚洲男人的天堂在线aⅴ视频| 亚洲一区二区不卡免费| 免费成人在线视频观看| 国产成人夜色高潮福利影视|