如何使用Laravel 5來實現登陸注冊功能

laravel是一種基于php語言的開源web框架,被越來越多的開發者使用。laravel框架內置了許多有用的功能,如視圖、路由、數據庫操作等,同時還支持拓展。本文將介紹如何使用laravel 5來實現登陸注冊功能。

  1. 安裝Laravel

首先需要在系統中安裝Laravel。安裝方法可以參考Laravel官方文檔或自行搜索。

  1. 創建數據庫

登陸注冊功能需要使用數據庫來存儲用戶信息。在此之前需要創建一個名為“laravel_login”的數據庫。可以在命令行中輸入如下指令:

mysql -u username -p CREATE database laravel_login;

其中,“username”是你的MySQL用戶名。這將創建一個空的名為“laravel_login”的數據庫。

  1. 創建用戶表

在Laravel 5中,通過遷移來創建和管理數據庫表。首先需要生成一個遷移文件。命令行中輸入:

php artisan make:migration create_users_table

這個命令將會生成一個遷移文件,默認會保存在“databasemigrations”文件夾中。

編輯這個遷移文件,在“up()”方法中定義用戶表的字段:

public function up() {     Schema::create('users', function (Blueprint $table) {         $table->increments('id');         $table->string('name');         $table->string('email')->unique();         $table->string('password');         $table->rememberToken();         $table->timestamps();     }); }

然后輸入以下命令以運行這個遷移并生成用戶表:

php artisan migrate
  1. 創建控制器和視圖

接下來創建控制器和視圖,用于顯示注冊和登陸頁面,并處理用戶輸入的信息。在命令行中輸入:

php artisan make:controller AuthController

這個命令將創建一個名為“AuthController”的控制器,默認會被保存在“apphttpControllers”文件夾中。

控制器代碼如下:

<?php  namespace AppHttpControllers;  use IlluminateHttpRequest;  class AuthController extends Controller {     public function showLoginForm()     {         return view('auth.login');     }      public function login(Request $request)     {         // 登陸邏輯     }      public function showRegistrationForm()     {         return view('auth.register');     }      public function register(Request $request)     {         // 注冊邏輯     }      public function logout(Request $request)     {         // 注銷邏輯     } }

然后需要創建視圖模板,用于渲染表單。在“resourcesviewsauth”文件夾中創建名為“login.blade.php”和“register.blade.php”的文件,分別是登陸和注冊的頁面模板。

模板代碼如下:

登陸模板:

@extends('layouts.app')  @section('content')     <div class="container">         <div class="row">             <div class="col-md-8 col-md-offset-2">                 <div class="panel panel-default">                     <div class="panel-heading">Login</div>                     <div class="panel-body">                         <form class="form-horizontal" method="POST" action="{{ route('login') }}">                             {{ csrf_field() }}                              <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">                                 <label for="email" class="col-md-4 control-label">E-Mail Address</label>                                  <div class="col-md-6">                                     <input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}" required autofocus>                                      @if ($errors->has('email'))                                         <span class="help-block">                                             <strong>{{ $errors->first('email') }}</strong>                                         </span>                                     @endif                                 </div>                             </div>                              <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">                                 <label for="password" class="col-md-4 control-label">Password</label>                                  <div class="col-md-6">                                     <input id="password" type="password" class="form-control" name="password" required>                                      @if ($errors->has('password'))                                         <span class="help-block">                                             <strong>{{ $errors->first('password') }}</strong>                                         </span>                                     @endif                                 </div>                             </div>                              <div class="form-group">                                 <div class="col-md-6 col-md-offset-4">                                     <div class="checkbox">                                         <label>                                             <input type="checkbox" name="remember" {{ old('remember') ? 'checked' : '' }}> Remember Me                                         </label>                                     </div>                                 </div>                             </div>                              <div class="form-group">                                 <div class="col-md-8 col-md-offset-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

注冊模板:

@extends('layouts.app')  @section('content')     <div class="container">         <div class="row">             <div class="col-md-8 col-md-offset-2">                 <div class="panel panel-default">                     <div class="panel-heading">Register</div>                     <div class="panel-body">                         <form class="form-horizontal" method="POST" action="{{ route('register') }}">                             {{ csrf_field() }}                              <div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">                                 <label for="name" class="col-md-4 control-label">Name</label>                                  <div class="col-md-6">                                     <input id="name" type="text" class="form-control" name="name" value="{{ old('name') }}" required autofocus>                                      @if ($errors->has('name'))                                         <span class="help-block">                                             <strong>{{ $errors->first('name') }}</strong>                                         </span>                                     @endif                                 </div>                             </div>                              <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">                                 <label for="email" class="col-md-4 control-label">E-Mail Address</label>                                  <div class="col-md-6">                                     <input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}" required>                                      @if ($errors->has('email'))                                         <span class="help-block">                                             <strong>{{ $errors->first('email') }}</strong>                                         </span>                                     @endif                                 </div>                             </div>                              <div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">                                 <label for="password" class="col-md-4 control-label">Password</label>                                  <div class="col-md-6">                                     <input id="password" type="password" class="form-control" name="password" required>                                      @if ($errors->has('password'))                                         <span class="help-block">                                             <strong>{{ $errors->first('password') }}</strong>                                         </span>                                     @endif                                 </div>                             </div>                              <div class="form-group">                                 <label for="password-confirm" class="col-md-4 control-label">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">                                 <div class="col-md-6 col-md-offset-4">                                     <button type="submit" class="btn btn-primary">                                         Register                                     </button>                                 </div>                             </div>                         </form>                     </div>                 </div>             </div>         </div>     </div> @endsection
  1. 完成路由

最后一步是設置路由,以便Laravel可以正確調用控制器和視圖。在“routesweb.php”文件中加入以下代碼:

Route::get('login', 'AuthController@showLoginForm')->name('login'); Route::post('login', 'AuthController@login'); Route::get('register', 'AuthController@showRegistrationForm')->name('register'); Route::post('register', 'AuthController@register'); Route::post('logout', 'AuthController@logout')->name('logout');

現在你可以訪問如下地址來查看注冊和登陸的頁面:

http://yourdomain.com/register http://yourdomain.com/login

以及如下地址來完成登陸和注銷操作:

http://yourdomain.com/login http://yourdomain.com/logout
  1. 結束語

通過本教程,你學會了如何在Laravel 5中實現登陸注冊的功能。當然,這只是最基本的實現方式。在操作、安全性方面等等,還有很多要注意的地方,需要在實際開發中不斷學習和完善。

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享