laravel是一種基于php語言的開源web框架,被越來越多的開發者使用。laravel框架內置了許多有用的功能,如視圖、路由、數據庫操作等,同時還支持拓展。本文將介紹如何使用laravel 5來實現登陸注冊功能。
- 安裝Laravel
首先需要在系統中安裝Laravel。安裝方法可以參考Laravel官方文檔或自行搜索。
- 創建數據庫
登陸注冊功能需要使用數據庫來存儲用戶信息。在此之前需要創建一個名為“laravel_login”的數據庫。可以在命令行中輸入如下指令:
其中,“username”是你的MySQL用戶名。這將創建一個空的名為“laravel_login”的數據庫。
- 創建用戶表
在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
- 創建控制器和視圖
接下來創建控制器和視圖,用于顯示注冊和登陸頁面,并處理用戶輸入的信息。在命令行中輸入:
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
- 完成路由
最后一步是設置路由,以便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
- 結束語
通過本教程,你學會了如何在Laravel 5中實現登陸注冊的功能。當然,這只是最基本的實現方式。在操作、安全性方面等等,還有很多要注意的地方,需要在實際開發中不斷學習和完善。