
สร้างระบบสมาชิกในเว็บไซต์ด้วย PHP และ Laravel
การสร้างระบบสมาชิกในการสอนทำเว็บไซต์เป็นหนึ่งในฟีเจอร์ที่จำเป็นสำหรับการบริหารจัดการผู้ใช้และการรักษาความปลอดภัยของเว็บไซต์ Laravel ซึ่งเป็น PHP Framework ที่มีความสามารถสูงและใช้งานง่าย ทำให้การสร้างระบบสมาชิกสามารถทำได้อย่างรวดเร็วและมีประสิทธิภาพ ในบทความนี้เราจะมาดูขั้นตอนการสร้างระบบสมาชิกที่มีคุณสมบัติเบื้องต้นเช่น การสมัครสมาชิก, การเข้าสู่ระบบ, การยืนยันอีเมล และการจัดการผู้ใช้ โดยใช้ Laravel Framework
1. ติดตั้ง Laravel
ก่อนที่จะเริ่มต้นพัฒนา เราต้องติดตั้ง Laravel บนเครื่องของเราเพื่อเริ่มต้นการพัฒนาแอปพลิเคชัน ในการติดตั้ง Laravel จะใช้ Composer ซึ่งเป็นเครื่องมือจัดการแพ็คเกจใน PHP
ขั้นตอนการติดตั้ง Laravel
- ติดตั้ง Composer หากยังไม่ได้ติดตั้ง ดาวน์โหลด Composer
- สร้างโปรเจ็กต์ Laravel ใหม่โดยการรันคำสั่ง:
composer create-project --prefer-dist laravel/laravel project_name
- เมื่อเสร็จสิ้นการติดตั้ง เข้าไปที่โฟลเดอร์โปรเจ็กต์ของคุณ:
cd project_name
- ตั้งค่าไฟล์
.env
สำหรับการเชื่อมต่อฐานข้อมูล โดยการตั้งค่าต่อไปนี้ในไฟล์.env
:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database
DB_USERNAME=your_username
DB_PASSWORD=your_password
2. สร้างตารางสำหรับสมาชิกในฐานข้อมูล
เมื่อเราเตรียมการตั้งค่า Laravel เรียบร้อยแล้ว เราจะสร้าง migration สำหรับตาราง users
เพื่อเก็บข้อมูลสมาชิก เช่น ชื่อ, อีเมล, รหัสผ่าน ฯลฯ
- สร้าง migration สำหรับ
users
:
php artisan make:migration create_users_table --create=users
- ในไฟล์ migration ที่สร้างขึ้นใน
database/migrations/xxxx_xx_xx_create_users_table.php
ให้เพิ่มโค้ดเพื่อสร้างตารางusers
:
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
- รัน migration เพื่อสร้างตารางในฐานข้อมูล:
php artisan migrate
3. สร้างระบบสมัครสมาชิก
ในขั้นตอนนี้ เราจะใช้ฟีเจอร์ที่ Laravel เตรียมไว้ให้สำหรับการจัดการระบบสมาชิก ซึ่งจะช่วยให้การสมัครสมาชิกง่ายขึ้น
- สร้าง controller สำหรับการจัดการผู้ใช้:
php artisan make:controller Auth/RegisterController
- ใน controller นี้เราจะใช้ฟังก์ชัน
create
เพื่อบันทึกข้อมูลของสมาชิกใหม่:
namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\User;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
class RegisterController extends Controller
{
public function showRegistrationForm()
{
return view(‘auth.register’);
}
public function register(Request $request)
{
// Validate the form data
$validator = Validator::make($request->all(), [
‘name’ => ‘required|string|max:255’,
’email’ => ‘required|string|email|max:255|unique:users’,
‘password’ => ‘required|string|min:8|confirmed’,
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
// Create the user
User::create([
‘name’ => $request->name,
’email’ => $request->email,
‘password’ => Hash::make($request->password),
]);
// Redirect or login the user after successful registration
return redirect()->route(‘login’);
}
}
4. สร้างหน้า Register
เราต้องสร้างหน้าเว็บสำหรับการสมัครสมาชิก (register) ที่ผู้ใช้จะกรอกข้อมูลของตนเอง
- สร้างไฟล์
resources/views/auth/register.blade.php
สำหรับฟอร์มสมัครสมาชิก:
<form method="POST" action="{{ route('register') }}">
@csrf
<div>
<label for="name">Name</label>
<input type="text" name="name" id="name" value="{{ old('name') }}" required>
</div>
<div>
<label for=“email”>Email</label>
<input type=“email” name=“email” id=“email” value=“{{ old(’email’) }}” required>
</div>
<div>
<label for=“password”>Password</label>
<input type=“password” name=“password” id=“password” required>
</div>
<div>
<label for=“password_confirmation”>Confirm Password</label>
<input type=“password” name=“password_confirmation” id=“password_confirmation” required>
</div>
<button type=“submit”>Register</button>
</form>
5. การเข้าสู่ระบบ
Laravel มีฟีเจอร์การเข้าสู่ระบบ (login) ที่สามารถใช้งานได้ทันทีโดยไม่ต้องเขียนโค้ดมากมาย คุณสามารถใช้ Auth
ในการจัดการการเข้าสู่ระบบได้
- ใน
routes/web.php
ให้เพิ่มเส้นทางสำหรับการเข้าสู่ระบบ:
use App\Http\Controllers\Auth\RegisterController;
Route::get(‘register’, [RegisterController::class, ‘showRegistrationForm’])->name(‘register’);
Route::post(‘register’, [RegisterController::class, ‘register’]);
- หากคุณต้องการฟังก์ชันเข้าสู่ระบบและออกจากระบบ (Login & Logout) คุณสามารถใช้คำสั่งของ Laravel เช่น
Auth::login()
และAuth::logout()
ซึ่งมีในฟังก์ชันAuth
พร้อมกับระบบตรวจสอบและยืนยันอีเมล
6. การยืนยันอีเมล
Laravel มีระบบการยืนยันอีเมลให้ใช้งานง่าย โดยคุณสามารถเปิดใช้ฟีเจอร์นี้ได้ใน model User
:
- ให้ User model ใช้
MustVerifyEmail
:
use Illuminate\Contracts\Auth\MustVerifyEmail;
class User extends Authenticatable implements MustVerifyEmail
{
// code here
}
- เปิดการยืนยันอีเมลใน
routes/web.php
:
Route::get('/email/verify', function () {
return view('auth.verify');
})->middleware('auth')->name('verification.notice');
สรุป
การสร้างระบบสมาชิกในการสอนทำเว็บไซต์ด้วย Laravel เป็นเรื่องง่ายและสะดวกมากเพราะ Laravel มีเครื่องมือและฟีเจอร์ที่เตรียมไว้ให้ใช้งานอยู่แล้ว เช่น การจัดการฐานข้อมูล, การยืนยันอีเมล, การเข้าสู่ระบบ และการจัดการผู้ใช้ ทำให้การสร้างระบบสมาชิกเป็นเรื่องที่ไม่ยุ่งยาก โดยสามารถปรับแต่งได้ตามต้องการ และสามารถขยายได้ในอนาคต