Việc tạo form đăng ký người dùng và lưu trữ thông tin vào cơ sở dữ liệu là một chức năng quan trọng trong hầu hết các ứng dụng web. Bài viết này sẽ hướng dẫn bạn cách tạo một form đăng ký đơn giản bằng PHP và kết nối với cơ sở dữ liệu MySQL.
Đầu tiên, cần tạo cơ sở dữ liệu và bảng trên MySQL server theo yêu cầu. Ví dụ, chúng ta sẽ tạo một cơ sở dữ liệu tên là “geeksforgeeks” và một bảng tên là “users”. Bảng “users” sẽ chứa các trường như username
, password
, và date
để lưu trữ thông tin người dùng.
Kết nối đến cơ sở dữ liệu MySQL được thực hiện thông qua hàm mysqli_connect()
trong PHP. Hàm này nhận bốn tham số: tên máy chủ (servername), tên người dùng (username), mật khẩu (password), và tên cơ sở dữ liệu (database).
<?php
$servername = "localhost";
$username = "root";
$password = "";
$database = "geeksforgeeks";
// Tạo kết nối
$conn = mysqli_connect($servername, $username, $password, $database);
// Kiểm tra kết nối
if($conn) {
echo "success";
} else {
die("Error". mysqli_connect_error());
}
?>
Đoạn mã trên tạo kết nối đến cơ sở dữ liệu. Bạn có thể kiểm tra kết nối bằng cách in ra thông báo “success” nếu kết nối thành công. Nếu kết nối thất bại, hàm die()
sẽ dừng chương trình và hiển thị lỗi.
Sau khi kết nối thành công, chúng ta cần tạo form đăng ký HTML. Form này sẽ cho phép người dùng nhập tên đăng nhập và mật khẩu. Dữ liệu từ form sẽ được gửi đến một file PHP để xử lý và lưu vào cơ sở dữ liệu.
<?php
$showAlert = false;
$showError = false;
$exists=false;
if($_SERVER["REQUEST_METHOD"] == "POST") {
include 'dbconnect.php';
$username = $_POST["username"];
$password = $_POST["password"];
$cpassword = $_POST["cpassword"];
$sql = "Select * from users where username='$username'";
$result = mysqli_query($conn, $sql);
$num = mysqli_num_rows($result);
if($num == 0) {
if(($password == $cpassword) && $exists==false) {
$hash = password_hash($password, PASSWORD_DEFAULT);
$sql = "INSERT INTO `users` ( `username`, `password`, `date`) VALUES ('$username', '$hash', current_timestamp())";
$result = mysqli_query($conn, $sql);
if ($result) {
$showAlert = true;
}
} else {
$showError = "Passwords do not match";
}
}
if($num>0) {
$exists="Username not available";
}
}
?>
<div class="container my-4 ">
<h1 class="text-center">Signup Here</h1>
<form action="/signup.php" method="post">
<div class="form-group">
<label for="username">Username</label>
<input type="text" class="form-control" id="username" name="username" aria-describedby="emailHelp">
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" id="password" name="password">
</div>
<div class="form-group">
<label for="cpassword">Confirm Password</label>
<input type="password" class="form-control" id="cpassword" name="cpassword">
<small id="emailHelp" class="form-text text-muted">Make sure to type the same password</small>
</div>
<button type="submit" class="btn btn-primary">SignUp</button>
</form>
</div>
Đoạn mã PHP xử lý dữ liệu từ form, kiểm tra xem tên người dùng đã tồn tại hay chưa, và mã hóa mật khẩu trước khi lưu vào cơ sở dữ liệu. Nếu đăng ký thành công, biến $showAlert
được đặt thành true
và hiển thị thông báo thành công. Nếu mật khẩu không khớp hoặc tên người dùng đã tồn tại, thông báo lỗi tương ứng sẽ được hiển thị.
Hình ảnh trên minh họa giao diện của form đăng ký. Người dùng cần nhập tên đăng nhập và mật khẩu, sau đó nhấn nút “SignUp” để gửi thông tin.
Hình ảnh này hiển thị thông báo lỗi khi người dùng nhập thông tin đăng nhập không hợp lệ. Việc hiển thị thông báo lỗi rõ ràng giúp người dùng dễ dàng sửa chữa và hoàn thành quá trình đăng ký. Lưu ý rằng việc kiểm tra và xác thực dữ liệu đầu vào từ phía máy chủ là rất quan trọng để bảo mật ứng dụng.