laravel框架之自帶登錄&註冊
程序员文章站
2022-06-09 14:05:37
//控制器層 //模型層 //視圖層 //註冊頁面 ......
//控制器層
<?php
namespace app\http\controllers\admin;
use app\models\admin\users;
use illuminate\http\request as request;
use app\http\controllers\controller;
use app\http\requests\register;
use illuminate\support\facades\db;
class usercontroller extends controller
{
public function login()
{
return view('admin.login');
}
public function login_do(request $request){
$model = new users();
if ($model->lo($request->only('email','password'))){
return redirect()->route('admin.showlist')->with('msg','登錄成功');
}
}
public function register()
{
return view('admin.register');
}
public function register_do(register $request)
{
$model = new users();
if ($model->zhuce($request->all())){
return redirect()->route('admin.login')->with('msg','用戶已註冊成功');
}
}
//模型層
<?php
namespace app\models\admin;
use illuminate\database\eloquent\model;
use illuminate\foundation\auth\user as authors;
class users extends authors
{
public $table = "users";
public function zhuce($data)
{
$this->username =$data['username'];
$this->password =bcrypt($data['password']);
$this->email =$data['email'];
return $this->save();
}
public function lo($data)
{
if (auth()->attempt($data)){
return auth()->user();
}
}
}
//視圖層
//註冊頁面
@extends('layouts.app')
@section('title','註冊頁面')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ __('register') }}</div>
<div class="card-body">
<form method="post" action="{{ route('admin.register_do') }}" aria-label="{{ __('register') }}">
@csrf
<div class="form-group row">
<label for="username" class="col-md-4 col-form-label text-md-right">{{ __('username') }}</label>
<div class="col-md-6">
<input id="username" type="text" class="form-control{{ $errors->has('username') ? ' is-invalid' : '' }}" name="username" value="{{ old('username') }}" required autofocus>
@if ($errors->has('username'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('username') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group row">
<label for="email" class="col-md-4 col-form-label text-md-right">{{ __('e-mail address') }}</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required>
@if ($errors->has('email'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('password') }}</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>
@if ($errors->has('password'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('password') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group row">
<label for="password-confirm" class="col-md-4 col-form-label text-md-right">{{ __('confirm password') }}</label>
<div class="col-md-6">
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('register') }}
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
//登錄頁面
@extends('layouts.app')
@section('title','登錄頁面')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">{{ session('msg' ?? 'login') }}</div>
<div class="card-body">
<form method="post" action="{{ route('admin.login_do') }}" aria-label="{{ __('login') }}">
@csrf
<div class="form-group row">
<label for="email" class="col-sm-4 col-form-label text-md-right">{{ __('e-mail address') }}</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control{{ $errors->has('email') ? ' is-invalid' : '' }}" name="email" value="{{ old('email') }}" required autofocus>
@if ($errors->has('email'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group row">
<label for="password" class="col-md-4 col-form-label text-md-right">{{ __('password') }}</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control{{ $errors->has('password') ? ' is-invalid' : '' }}" name="password" required>
@if ($errors->has('password'))
<span class="invalid-feedback" role="alert">
<strong>{{ $errors->first('password') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group row">
<div class="col-md-6 offset-md-4">
<div class="form-check">
<input class="form-check-input" type="checkbox" name="remember" id="remember" {{ old('remember') ? 'checked' : '' }}>
<label class="form-check-label" for="remember">
{{ __('remember me') }}
</label>
</div>
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-8 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('login') }}
</button>
<a class="btn btn-link" href="{{ route('password.request') }}">
{{ __('forgot your password?') }}
</a>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
//佈局頁面 layouts
<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getlocale()) }}">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- csrf token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<title>@yield('title')</title>
<!-- scripts -->
<script src="{{ asset('js/app.js') }}" defer></script>
<!-- fonts -->
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
<link href="https://fonts.googleapis.com/css?family=nunito" rel="stylesheet" type="text/css">
<!-- styles -->
<link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
<div id="app">
<nav class="navbar navbar-expand-md navbar-light navbar-laravel">
<div class="container">
<a class="navbar-brand" href="{{ url('/') }}">
{{ config('app.name', 'laravel') }}
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarsupportedcontent" aria-controls="navbarsupportedcontent" aria-expanded="false" aria-label="{{ __('toggle navigation') }}">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarsupportedcontent">
<!-- left side of navbar -->
<ul class="navbar-nav mr-auto">
</ul>
<!-- right side of navbar -->
<ul class="navbar-nav ml-auto">
<!-- authentication links -->
@guest
<li class="nav-item">
<a class="nav-link" href="{{ route('admin.login') }}">{{ __('login') }}</a>
</li>
<li class="nav-item">
<a class="nav-link" href="{{ route('admin.register') }}">{{ __('register') }}</a>
</li>
@else
<li class="nav-item dropdown">
<a id="navbardropdown" class="nav-link dropdown-toggle" href="#" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
{{ auth::user()->name }} <span class="caret"></span>
</a>
<div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbardropdown">
<a class="dropdown-item" href="{{ route('logout') }}"
onclick="event.preventdefault();
document.getelementbyid('logout-form').submit();">
{{ __('logout') }}
</a>
<form id="logout-form" action="{{ route('logout') }}" method="post" style="display: none;">
@csrf
</form>
</div>
</li>
@endguest
</ul>
</div>
</div>
</nav>
<main class="py-4">
@yield('content')
</main>
</div>
</body>
</html>