สอนทำเว็บไซต์

วิธีสร้างฟอร์มสมัครสมาชิกในเว็บไซต์ด้วย PHP และ JavaScript

การสร้างฟอร์มสมัครสมาชิกเป็นหนึ่งในขั้นตอนสำคัญในการสอนทำเว็บไซต์ ไม่ว่าจะเป็นเว็บไซต์ธุรกิจ บล็อก หรือแพลตฟอร์มออนไลน์อื่น ๆ การมีระบบสมัครสมาชิกที่มีประสิทธิภาพจะช่วยให้คุณสามารถเก็บข้อมูลผู้ใช้งาน ตรวจสอบความถูกต้อง และสร้างประสบการณ์ที่ดีให้กับผู้ใช้ ในบทความนี้ เราจะมาพูดถึงวิธีการสร้างฟอร์มสมัครสมาชิกในเว็บไซต์โดยใช้ PHP และ JavaScript พร้อมทั้งแนวทางในการเพิ่มความปลอดภัยและการตรวจสอบข้อมูล

เนื้อหาในบทความ

  1. การเตรียมสิ่งที่ต้องใช้
  2. สร้างฟอร์มสมัครสมาชิกด้วย HTML
  3. การตรวจสอบข้อมูลด้านลูกค้าด้วย JavaScript
  4. การประมวลผลข้อมูลด้วย PHP
  5. การเชื่อมต่อกับฐานข้อมูล MySQL
  6. การเพิ่มความปลอดภัยในฟอร์มสมัครสมาชิก
  7. สรุป

การเตรียมสิ่งที่ต้องใช้

ก่อนที่เราจะเริ่มสร้างฟอร์มสมัครสมาชิก เราจำเป็นต้องเตรียมสิ่งต่อไปนี้:

  • เว็บเซิร์ฟเวอร์: เช่น XAMPP, WAMP หรือ MAMP ที่ติดตั้ง Apache, PHP และ MySQL
  • โปรแกรมแก้ไขโค้ด: เช่น Visual Studio Code, Sublime Text หรือ Atom
  • ฐานข้อมูล MySQL: สำหรับเก็บข้อมูลผู้ใช้งาน
  • เบราว์เซอร์เว็บ: เพื่อทดสอบฟอร์มสมัครสมาชิก

สร้างฟอร์มสมัครสมาชิกด้วย HTML

เริ่มต้นด้วยการสร้างโครงสร้างของฟอร์มสมัครสมาชิกด้วย HTML โดยฟอร์มนี้จะประกอบด้วยฟิลด์พื้นฐาน เช่น ชื่อผู้ใช้ อีเมล และรหัสผ่าน

html
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<title>สมัครสมาชิก</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f2f2f2;
padding: 50px;
}
.container {
background-color: #fff;
padding: 20px 40px 40px 40px;
border-radius: 10px;
max-width: 500px;
margin: auto;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
}
input[type=text], input[type=email], input[type=password] {
width: 100%;
padding: 12px;
margin: 8px 0 20px 0;
border: 1px solid #ccc;
border-radius: 4px;
}
button {
background-color: #4CAF50;
color: white;
padding: 14px 20px;
border: none;
border-radius: 4px;
cursor: pointer;
width: 100%;
}
button:hover {
background-color: #45a049;
}
.error {
color: red;
margin-bottom: 15px;
}
</style>
</head>
<body>

<div class=“container”>
<h2>สมัครสมาชิก</h2>
<form id=“registrationForm” action=“register.php” method=“POST”>
<label for=“username”>ชื่อผู้ใช้:</label>
<input type=“text” id=“username” name=“username” required>

<label for=“email”>อีเมล:</label>
<input type=“email” id=“email” name=“email” required>

<label for=“password”>รหัสผ่าน:</label>
<input type=“password” id=“password” name=“password” required>

<label for=“confirm_password”>ยืนยันรหัสผ่าน:</label>
<input type=“password” id=“confirm_password” name=“confirm_password” required>

<div class=“error” id=“errorMsg”></div>

<button type=“submit”>สมัครสมาชิก</button>
</form>
</div>

<script src=“validation.js”></script>
</body>
</html>

การตรวจสอบข้อมูลด้านลูกค้าด้วย JavaScript

การตรวจสอบข้อมูลที่ผู้ใช้กรอกก่อนส่งไปยังเซิร์ฟเวอร์เป็นขั้นตอนสำคัญในการป้องกันข้อมูลที่ไม่ถูกต้องหรือไม่ปลอดภัย เราจะใช้ JavaScript ในการตรวจสอบความถูกต้องของข้อมูล

สร้างไฟล์ validation.js และเพิ่มโค้ดต่อไปนี้:

javascript
document.getElementById('registrationForm').addEventListener('submit', function(event) {
var username = document.getElementById('username').value.trim();
var email = document.getElementById('email').value.trim();
var password = document.getElementById('password').value;
var confirmPassword = document.getElementById('confirm_password').value;
var errorMsg = '';

if (username.length < 3) {
errorMsg += ‘ชื่อผู้ใช้ต้องมีอย่างน้อย 3 ตัวอักษร<br>’;
}

var emailPattern = /^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/;
if (!emailPattern.test(email)) {
errorMsg += ‘อีเมลไม่ถูกต้อง<br>’;
}

if (password.length < 6) {
errorMsg += ‘รหัสผ่านต้องมีอย่างน้อย 6 ตัวอักษร<br>’;
}

if (password !== confirmPassword) {
errorMsg += ‘รหัสผ่านและยืนยันรหัสผ่านไม่ตรงกัน<br>’;
}

if (errorMsg !== ) {
document.getElementById(‘errorMsg’).innerHTML = errorMsg;
event.preventDefault();
}
});

โค้ดนี้จะตรวจสอบว่า:

  • ชื่อผู้ใช้มีความยาวอย่างน้อย 3 ตัวอักษร
  • อีเมลมีรูปแบบที่ถูกต้อง
  • รหัสผ่านมีความยาวอย่างน้อย 6 ตัวอักษร
  • รหัสผ่านและยืนยันรหัสผ่านตรงกัน

ถ้าข้อมูลไม่ถูกต้อง ฟอร์มจะไม่ถูกส่งและจะแสดงข้อความผิดพลาด

การประมวลผลข้อมูลด้วย PHP

เมื่อข้อมูลผ่านการตรวจสอบด้านลูกค้าแล้ว ขั้นตอนต่อไปคือการประมวลผลข้อมูลด้วย PHP ซึ่งจะรับข้อมูลจากฟอร์ม ตรวจสอบความถูกต้องเพิ่มเติม และเก็บข้อมูลลงฐานข้อมูล

สร้างไฟล์ register.php และเพิ่มโค้ดต่อไปนี้:

php
<?php
// การเชื่อมต่อกับฐานข้อมูล
$servername = "localhost";
$username_db = "root";
$password_db = "";
$dbname = "registration_db";

// สร้างการเชื่อมต่อ
$conn = new mysqli($servername, $username_db, $password_db, $dbname);

// ตรวจสอบการเชื่อมต่อ
if ($conn->connect_error) {
die(“การเชื่อมต่อไม่สำเร็จ: “ . $conn->connect_error);
}

// รับข้อมูลจากฟอร์ม
$username = trim($_POST[‘username’]);
$email = trim($_POST[’email’]);
$password = $_POST[‘password’];
$confirm_password = $_POST[‘confirm_password’];

// ตรวจสอบข้อมูล
$errors = array();

if (strlen($username) < 3) {
$errors[] = “ชื่อผู้ใช้ต้องมีอย่างน้อย 3 ตัวอักษร”;
}

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = “อีเมลไม่ถูกต้อง”;
}

if (strlen($password) < 6) {
$errors[] = “รหัสผ่านต้องมีอย่างน้อย 6 ตัวอักษร”;
}

if ($password !== $confirm_password) {
$errors[] = “รหัสผ่านและยืนยันรหัสผ่านไม่ตรงกัน”;
}

// ตรวจสอบว่ามีผู้ใช้ที่มีอีเมลเดียวกันหรือไม่
$sql = “SELECT id FROM users WHERE email = ?”;
$stmt = $conn->prepare($sql);
$stmt->bind_param(“s”, $email);
$stmt->execute();
$stmt->store_result();

if ($stmt->num_rows > 0) {
$errors[] = “มีผู้ใช้อีเมลนี้อยู่แล้ว”;
}

$stmt->close();

if (empty($errors)) {
// แฮชรหัสผ่าน
$hashed_password = password_hash($password, PASSWORD_DEFAULT);

// เตรียมคำสั่ง SQL เพื่อเพิ่มผู้ใช้ใหม่
$sql = “INSERT INTO users (username, email, password) VALUES (?, ?, ?)”;
$stmt = $conn->prepare($sql);
$stmt->bind_param(“sss”, $username, $email, $hashed_password);

if ($stmt->execute()) {
echo “สมัครสมาชิกสำเร็จ!”;
} else {
echo “เกิดข้อผิดพลาด: “ . $stmt->error;
}

$stmt->close();
} else {
foreach ($errors as $error) {
echo “<p style=’color:red;’>$error</p>”;
}
}

$conn->close();
?>

อธิบายโค้ด PHP

  1. การเชื่อมต่อกับฐานข้อมูล: ใช้ mysqli เพื่อเชื่อมต่อกับฐานข้อมูล MySQL
  2. รับข้อมูลจากฟอร์ม: ใช้ $_POST เพื่อรับข้อมูลที่ส่งมาจากฟอร์ม
  3. การตรวจสอบข้อมูล: ตรวจสอบความถูกต้องของข้อมูลเพิ่มเติม เช่น ความยาวของชื่อผู้ใช้ รหัสผ่าน และตรวจสอบว่าอีเมลนั้นมีอยู่ในฐานข้อมูลแล้วหรือไม่
  4. การแฮชรหัสผ่าน: ใช้ password_hash เพื่อแฮชรหัสผ่านก่อนเก็บในฐานข้อมูล
  5. การเพิ่มข้อมูลผู้ใช้ใหม่: ใช้คำสั่ง SQL INSERT เพื่อเพิ่มข้อมูลผู้ใช้ลงในตาราง users
  6. การแสดงผล: แสดงข้อความสำเร็จหรือข้อผิดพลาดตามสถานการณ์

การเชื่อมต่อกับฐานข้อมูล MySQL

ก่อนที่จะสามารถใช้งานฟอร์มสมัครสมาชิก เราต้องสร้างฐานข้อมูลและตารางสำหรับเก็บข้อมูลผู้ใช้

สร้างฐานข้อมูลและตาราง

ใช้คำสั่ง SQL ต่อไปนี้เพื่อสร้างฐานข้อมูลและตาราง:

sql

CREATE DATABASE registration_db;

USE registration_db;

CREATE TABLE users (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

อธิบายตาราง users

  • id: รหัสผู้ใช้ที่ไม่ซ้ำและเพิ่มขึ้นอัตโนมัติ
  • username: ชื่อผู้ใช้
  • email: อีเมลผู้ใช้ที่ไม่ซ้ำกัน
  • password: รหัสผ่านที่แฮชแล้ว
  • created_at: เวลาที่สมัครสมาชิก

การเพิ่มความปลอดภัยในฟอร์มสมัครสมาชิก

การสร้างฟอร์มสมัครสมาชิกไม่เพียงแต่ต้องมีการตรวจสอบข้อมูลเท่านั้น แต่ยังต้องมีการป้องกันการโจมตีต่าง ๆ เช่น SQL Injection และ Cross-Site Scripting (XSS) ด้วย

การใช้ Prepared Statements

ในโค้ด PHP ที่เราใช้ prepare และ bind_param เพื่อป้องกัน SQL Injection การใช้ Prepared Statements ช่วยให้คำสั่ง SQL ไม่สามารถถูกปรับเปลี่ยนได้โดยผู้โจมตี

การแฮชรหัสผ่าน

ใช้ฟังก์ชัน password_hash ในการแฮชรหัสผ่านก่อนเก็บในฐานข้อมูล เพื่อเพิ่มความปลอดภัยในการจัดเก็บข้อมูลรหัสผ่าน

การตรวจสอบและกรองข้อมูล

ใช้ฟังก์ชันเช่น filter_var เพื่อกรองและตรวจสอบความถูกต้องของข้อมูลที่รับเข้ามา

การป้องกัน XSS

ใช้ฟังก์ชัน htmlspecialchars หรือ htmlentities ในการแปลงข้อมูลที่รับเข้ามาให้อยู่ในรูปแบบที่ปลอดภัยเมื่อแสดงผลบนเว็บ

php
$username = htmlspecialchars(trim($_POST['username']));
$email = htmlspecialchars(trim($_POST['email']));

สรุป

การสอนทำเว็บไซต์ด้วย PHP และ JavaScript เป็นกระบวนการที่รวมถึงการออกแบบฟอร์มที่ใช้งานง่าย การตรวจสอบข้อมูลทั้งด้านลูกค้าและเซิร์ฟเวอร์ และการจัดการกับฐานข้อมูลอย่างปลอดภัย การปฏิบัติตามแนวทางด้านความปลอดภัยจะช่วยให้เว็บไซต์ของคุณมีความน่าเชื่อถือและป้องกันข้อมูลผู้ใช้จากการโจมตี

Leave A Comment