Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan fungsi log masuk pengguna dalam PHP

Bagaimana untuk melaksanakan fungsi log masuk pengguna dalam PHP

WBOY
WBOYasal
2023-06-11 11:54:262425semak imbas

Dengan pembangunan Internet yang berterusan, fungsi log masuk pengguna telah menjadi bahagian penting dalam banyak laman web. Sebagai bahasa pengaturcaraan yang digunakan secara meluas dalam pembangunan web, PHP juga boleh melaksanakan fungsi log masuk pengguna dengan menulis kod. Dalam artikel ini, kami akan memperincikan cara melaksanakan fungsi log masuk pengguna dalam PHP.

  1. Prasyarat

Sebelum mula menulis fungsi log masuk pengguna, kita perlu menyediakan prasyarat berikut:

  • Persekitaran PHP: Pastikan anda mempunyai persekitaran PHP yang dipasang dan tahu cara menjalankan kod PHP secara tempatan.
  • Pangkalan Data: Fungsi log masuk memerlukan penggunaan pangkalan data untuk menyimpan maklumat pengguna. Dalam artikel ini, kami menggunakan pangkalan data MySQL, jadi anda perlu memastikan anda telah memasang MySQL dan boleh menyambung ke pangkalan data.
  • Rangka kerja PHP: Dalam artikel ini, kami akan menggunakan rangka kerja Laravel, tetapi jika anda menggunakan rangka kerja lain atau pembangunan PHP tulen, anda juga boleh merujuk idea dalam artikel ini untuk pembangunan.
  1. Buat jadual pengguna

Sebelum kita mula menulis kod, kita perlu mencipta jadual pengguna dalam pangkalan data untuk menyimpan maklumat pengguna. Anggapkan bahawa jadual pengguna kami dinamakan pengguna dan mengandungi medan berikut:

  • id: ID pengguna, jenis integer meningkat sendiri.
  • nama: nama pengguna, jenis rentetan.
  • e-mel: Alamat e-mel pengguna, jenis rentetan.
  • kata laluan: kata laluan pengguna, jenis rentetan.
  • created_at: Masa penciptaan, jenis cap masa.
  • updated_at: masa kemas kini, jenis cap masa.

Anda boleh mencipta jadual pengguna dalam pangkalan data MySQL melalui pernyataan SQL berikut:

CREATE TABLE `users` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL DEFAULT '',
  `email` varchar(255) NOT NULL DEFAULT '',
  `password` varchar(255) NOT NULL DEFAULT '',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `users_email_unique` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
  1. Tulis kod fungsi log masuk pengguna

Dalam rangka kerja Laravel, kita boleh melaksanakan fungsi log masuk pengguna dengan menulis pengawal dan pandangan. Dalam artikel ini, kami akan menggunakan contoh kod berikut untuk melaksanakan fungsi log masuk pengguna.

Pertama, kita perlu mencipta fail pengawal AuthController dalam direktori app/Http/Controllers untuk mengendalikan log masuk pengguna:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;
use IlluminateSupportFacadesAuth;

class AuthController extends Controller
{
    public function getLogin()
    {
        return view('auth.login');
    }

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

        if (Auth::attempt($credentials)) {
            // 登录成功
            return redirect()->intended('/');
        } else {
            // 登录失败
            return redirect()->back()->withErrors(['email' => '邮箱或密码不正确']);
        }
    }

    public function logout()
    {
        Auth::logout();

        return redirect()->route('login');
    }
}

Dalam kod di atas, kami mentakrifkan getLogin, postLogin dan logout Tiga kaedah . Antaranya, kaedah getLogin digunakan untuk mengembalikan paparan halaman log masuk (auth.login), kaedah postLogin digunakan untuk memproses borang log masuk yang dihantar oleh pengguna, dan kaedah log keluar digunakan untuk log keluar.

Seterusnya, kita perlu mencipta fail paparan bernama auth/login.blade.php dalam direktori resources/views untuk memaparkan borang log masuk. Kandungan fail adalah seperti berikut:

@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">登录</div>

                <div class="panel-body">
                    {!! Form::open(['route' => 'login.post', 'class' => 'form-horizontal']) !!}

                    <div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
                        {!! Form::label('email', '邮箱', ['class' => 'col-md-4 control-label']) !!}

                        <div class="col-md-6">
                            {!! Form::email('email', old('email'), ['class' => 'form-control', 'required' => 'required', 'autofocus' => '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' : '' }}">
                        {!! Form::label('password', '密码', ['class' => 'col-md-4 control-label']) !!}

                        <div class="col-md-6">
                            {!! Form::password('password', ['class' => 'form-control', 'required' => '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>
                                    {!! Form::checkbox('remember') !!} 记住我
                                </label>
                            </div>
                        </div>
                    </div>

                    <div class="form-group">
                        <div class="col-md-8 col-md-offset-4">
                            {!! Form::submit('登录', ['class' => 'btn btn-primary']) !!}

                            <a class="btn btn-link" href="{{ route('password.request') }}">
                                忘记密码?
                            </a>
                        </div>
                    </div>

                    {!! Form::close() !!}
                </div>
            </div>
        </div>
    </div>
</div>
@endsection

Dalam kod di atas, kami menggunakan sintaks enjin templat Blade rangka kerja Laravel untuk mencipta paparan borang log masuk dengan cepat.

  1. Konfigurasikan penghalaan

Akhir sekali, kami perlu mengkonfigurasi laluan berkaitan log masuk pengguna dalam fail penghalaan route/web.php, seperti yang ditunjukkan di bawah:

Route::get('login', 'AuthController@getLogin')->name('login');
Route::post('login', 'AuthController@postLogin')->name('login.post');
Route::post('logout', 'AuthController@logout')->name('logout');

Dalam kod di atas, kami mentakrifkan tiga laluan, sepadan dengan halaman log masuk pengguna, pengguna menghantar borang log masuk dan pengguna log keluar.

  1. Menguji fungsi log masuk pengguna

Selepas penulisan dan konfigurasi kod di atas, kami telah menyelesaikan pelaksanaan fungsi log masuk pengguna. Kini, kita boleh melawati halaman http://your-domain.com/login dalam penyemak imbas, masukkan e-mel dan kata laluan yang betul, dan kemudian klik butang "Log Masuk" untuk berjaya log masuk ke tapak web.

Ringkasan

Melalui pengenalan artikel ini, kami telah mempelajari cara melaksanakan fungsi log masuk pengguna dalam PHP, termasuk mencipta jadual pengguna, menulis pengawal dan pandangan, mengkonfigurasi penghalaan dan langkah lain. Sudah tentu, artikel ini hanya menyediakan contoh mudah, dan logik pemprosesan yang lebih kompleks mungkin diperlukan dalam pembangunan sebenar. Saya harap pembaca dapat menguasai teknik yang diperkenalkan dalam artikel ini dan menggunakannya untuk mencapai fungsi log masuk pengguna yang lebih berkuasa.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi log masuk pengguna dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn