如何使用Laravel 5来实现登陆注册功能

PHPz
PHPz 原创
2023-04-21 11:13:37 326浏览

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

这个命令将会生成一个迁移文件,默认会保存在“database\migrations”文件夹中。

编辑这个迁移文件,在“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”的控制器,默认会被保存在“app\Http\Controllers”文件夹中。

控制器代码如下:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

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)
    {
        // 注销逻辑
    }
}

然后需要创建视图模板,用于渲染表单。在“resources\views\auth”文件夹中创建名为“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可以正确调用控制器和视图。在“routes\web.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中实现登陆注册的功能。当然,这只是最基本的实现方式。在操作、安全性方面等等,还有很多要注意的地方,需要在实际开发中不断学习和完善。

以上就是如何使用Laravel 5来实现登陆注册功能的详细内容,更多请关注php中文网其它相关文章!

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。