首頁  >  文章  >  php框架  >  laravel實現註冊登錄

laravel實現註冊登錄

WBOY
WBOY原創
2023-05-21 09:31:071130瀏覽

Laravel是一款常用的PHP框架,具有優雅的語法、強大的功能和文件豐富的特點,已成為眾多PHP開發人員的首選框架。本文將介紹如何使用Laravel框架實現註冊和登入功能。

一、建立Laravel應用程式
在開始實作註冊和登入功能之前,首先需要建立一個Laravel應用程式。可以使用Laravel官方提供的Composer命令來創建新應用程序,如下所示:

composer create-project --prefer-dist laravel/laravel your-project-name

其中,your-project-name是您想要創建的應用程式的名稱。

建立完成後,進入應用程式目錄並啟動本機伺服器:

cd your-project-name
php artisan serve

在瀏覽器中輸入http://localhost:8000,即可存取應用程式的歡迎頁面。

二、建立認證系統
在實現註冊和登入功能之前,需要先建立一個基本的認證系統。 Laravel提供了make:auth Artisan指令,可以快速產生認證相關的視圖和控制器。

php artisan make:auth

執行上述指令後,Laravel會自動建立registerloginlogout等相關的檢視和控制器,並將它們添加到應用程式中。此外,Laravel也會在資料庫中建立相關的使用者和密碼重設表。

三、建立資料庫表
預設情況下,Laravel使用MySQL資料庫。在本例中,需要建立一個名為users的資料表來儲存使用者資料。可以使用下列Artisan指令來建立該表:

php artisan make:migration create_users_table --create=users

執行上述指令後,Laravel會在應用程式的database/migrations目錄中建立一個名為create_users_table的遷移檔案。開啟該檔案並修改up方法,如下所示:

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

上述遷移檔案定義了users資料表的字段,包括name (使用者名稱)、email(電子郵件地址)、password(密碼)等等。

在修改完遷移檔案之後,需要執行以下Artisan指令,實際建立users資料表:

php artisan migrate

四、建立註冊頁面
接下來,需要建立一個註冊頁面,讓使用者可以輸入自己的使用者名稱、電子郵件地址和密碼。打開resources/views/auth/register.blade.php文件,可以看到Laravel已經為我們創建了一個基本的註冊表單。

此時,我們需要刪除一些字段,同時增加必須填寫的name字段和確認密碼password_confirmation字段。修改後的程式碼如下所示:

<form method="POST" action="{{ route('register') }}">
    @csrf

    <div>
        <label for="name">{{ __('Name') }}</label>

        <div>
            <input id="name" type="text" name="name" value="{{ old('name') }}" required autofocus>
        </div>
    </div>

    <div>
        <label for="email">{{ __('E-Mail Address') }}</label>

        <div>
            <input id="email" type="email" name="email" value="{{ old('email') }}" required>
        </div>
    </div>

    <div>
        <label for="password">{{ __('Password') }}</label>

        <div>
            <input id="password" type="password" name="password" required>
        </div>
    </div>

    <div>
        <label for="password-confirm">{{ __('Confirm Password') }}</label>

        <div>
            <input id="password-confirm" type="password" name="password_confirmation" required>
        </div>
    </div>

    <div>
        <button type="submit">
            {{ __('Register') }}
        </button>
    </div>
</form>

五、處理註冊請求
現在,註冊表單已經創建,但是當使用者提交表單時並不會生效。所以我們需要修改app/Http/Controllers/Auth/RegisterController.php檔案來處理註冊請求。

public function store(Request $request)
{
    $this->validate($request, [
        'name' => 'required|string|max:255',
        'email' => 'required|string|email|unique:users|max:255',
        'password' => 'required|string|min:8|confirmed',
    ]);

    User::create([
        'name' => $request->name,
        'email' => $request->email,
        'password' => bcrypt($request->password),
    ]);

    return redirect()->intended('dashboard');
}

上述程式碼定義了一個名為store()的方法,此方法用於處理註冊請求。首先,validate()方法會驗證請求的資料。如果驗證通過,則使用User模型來建立一個新用戶,並對密碼進行加密。最後,重定向到應用程式的儀表板頁面。

六、建立登入頁面
接下來,需要建立一個登入頁面,讓使用者可以輸入自己的已註冊電子郵件地址和密碼。開啟resources/views/auth/login.blade.php文件,可以看到Laravel已經為我們建立了一個基本的登入表單。

七、處理登入要求
註冊表單已經創建,但是當使用者提交表單時並不會生效。所以我們需要修改app/Http/Controllers/Auth/LoginController.php檔案來處理登入要求。

public function store(Request $request)
{
    $credentials = $request->only('email', 'password');

    if (Auth::attempt($credentials)) {
        $request->session()->regenerate();

        return redirect()->intended('dashboard');
    }

    return back()->withErrors([
        'email' => 'The provided credentials do not match our records.',
    ]);
}

上述程式碼定義了一個名為store()的方法,此方法用於處理登入要求。首先,attempt()方法會嘗試使用使用者提供的憑證進行驗證。如果驗證成功,則產生新會話並將使用者重新導向到應用程式的儀表板頁面。如果失敗,則會使用back()方法將使用者重新導向回原始登入頁面,並顯示錯誤訊息。

八、設定認證中間件
一旦註冊和登入功能已經實現,需要保護應用程式的某些路由,只有已認證的使用者才能存取。在Laravel中,可以使用中間件來實現此目的。 Laravel提供了一個名為auth的中間件,它會驗證使用者是否已登入應用程式。

Laravel預設將auth中間件套用到任何使用auth路由名稱的路由。可以使用以下程式碼來指定一個或多個中間件:

Route::get('/dashboard', function () {
    // 仅允许已登录用户访问
})->middleware(['auth']);

現在,只有已認證的使用者才能存取/dashboard路由。

總結
本文介紹如何使用Laravel框架實現註冊和登入功能。借助Laravel框架,可以快速方便地建立一個安全可靠的web應用程序,促進web應用程式的開發進程。無論是初學者還是有經驗的開發人員,都可以嘗試使用Laravel框架來建立自己的web應用程式。

以上是laravel實現註冊登錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn