ホームページ  >  記事  >  PHPフレームワーク  >  Laravel5を使ってログイン登録機能を実装する方法

Laravel5を使ってログイン登録機能を実装する方法

PHPz
PHPzオリジナル
2023-04-21 10:06:24626ブラウズ

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
    コントローラーとビューの作成
次に、登録ページとログイン ページを表示し、ユーザーが入力した情報を処理するためのコントローラーとビューを作成します。コマンド ラインに次のように入力します:

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(&#39;auth.login&#39;);
    }

    public function login(Request $request)
    {
        // 登陆逻辑
    }

    public function showRegistrationForm()
    {
        return view(&#39;auth.register&#39;);
    }

    public function register(Request $request)
    {
        // 注册逻辑
    }

    public function logout(Request $request)
    {
        // 注销逻辑
    }
}

次に、フォームをレンダリングするためのビュー テンプレートを作成する必要があります。 「resources\views\auth」フォルダーに「login.blade.php」と「register.blade.php」という名前のファイルを作成します。これらはそれぞれログイン ページ テンプレートと登録ページ テンプレートです。

テンプレート コードは次のとおりです:

ログイン テンプレート:

@extends(&#39;layouts.app&#39;)

@section(&#39;content&#39;)
    <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(&#39;login&#39;) }}">
                            {{ 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(&#39;email&#39;) }}" 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(&#39;remember&#39;) ? &#39;checked&#39; : &#39;&#39; }}> 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(&#39;password.request&#39;) }}">
                                        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(&#39;register&#39;) }}">
                            {{ 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(&#39;name&#39;) }}" 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(&#39;email&#39;) }}" 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 がコントローラーを呼び出して正しく表示できるようにルーティングを設定することです。次のコードを「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
    結論
このチュートリアルを通じて、Laravel 5 でログインと登録機能を実装する方法を学びました。もちろん、これは最も基本的な実装にすぎません。操作性やセキュリティ面など、まだまだ注意すべき点が多く、実際の開発においては継続的に学び改善していく必要があります。

以上がLaravel5を使ってログイン登録機能を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。