Xây dựng hệ thống thông báo (flash message)

jk5587725

By jk5587725

Cập nhật Tháng 9 23, 2025

Trong quá trình phát triển web bằng PHP, việc gửi một thông báo nhỏ tới người dùng sau khi họ thực hiện hành động gì đó (như gửi form, đăng nhập thành công, đăng ký xong…) là điều cực kỳ phổ biến. Những thông báo này thường chỉ hiển thị một lần duy nhất – rồi biến mất ở lần tải trang tiếp theo. Đó chính là lúc flash message xuất hiện!

Hãy tưởng tượng bạn đi đăng ký tài khoản trên một website. Sau khi nhấn nút “Đăng ký”, bạn thấy một thông báo hiện lên: “Chúc mừng! Bạn đã đăng ký thành công.” Dễ chịu phải không? Nhưng nếu bạn F5 lại trang thì thông báo ấy… biến mất.

Vậy hệ thống làm cách nào để hiển thị một thông báo chỉ đúng một lần như vậy?

Chính là nhờ vào session và kỹ thuật gọi là flash message – một dạng thông báo tạm thời.


Mục tiêu bài học

  • Hiểu cách tạo và hiển thị flash message.
  • Áp dụng được vào các form gửi dữ liệu như đăng nhập, liên hệ…
  • Tổ chức code rõ ràng, dễ bảo trì.

Cách hoạt động của Flash Message

Flash message hoạt động theo cơ chế:

  1. Gửi thông báo (gán giá trị vào $_SESSION['flash']).
  2. Hiển thị thông báo nếu tồn tại trong $_SESSION.
  3. Xóa thông báo ngay sau khi hiển thị để không lặp lại.

Cùng bắt tay vào làm

Tạo file helpers.php (nếu chưa có)

<?php
// Đặt trong includes/helpers.php

function set_flash($type, $message) {
  $_SESSION['flash'] = [
    'type' => $type,
    'message' => $message
  ];
}

function show_flash() {
  if (!empty($_SESSION['flash'])) {
    $type = $_SESSION['flash']['type'];
    $message = $_SESSION['flash']['message'];

    // Có thể tuỳ biến class CSS theo $type
    echo "<div class='flash {$type}'>{$message}</div>";

    // Xoá sau khi hiển thị
    unset($_SESSION['flash']);
  }
}

Tùy vào type mà bạn có thể gắn màu khác nhau như: success, error, warning


Ví dụ trong file xử lý đăng nhập (login_process.php)

<?php
session_start();
require_once 'includes/helpers.php';

$username = $_POST['username'] ?? '';
$password = $_POST['password'] ?? '';

if ($username === 'admin' && $password === '123456') {
  set_flash('success', 'Đăng nhập thành công!');
  header('Location: dashboard.php');
  exit;
} else {
  set_flash('error', 'Sai thông tin đăng nhập.');
  header('Location: login.php');
  exit;
}

Hiển thị trong login.php

<?php
session_start();
require_once 'includes/helpers.php';
?>

<!DOCTYPE html>
<html>
<head>
  <title>Đăng nhập</title>
  <style>
    .flash.success { background: #d4edda; color: #155724; padding: 10px; margin: 10px 0; }
    .flash.error { background: #f8d7da; color: #721c24; padding: 10px; margin: 10px 0; }
  </style>
</head>
<body>

<?php show_flash(); ?>

<form method="post" action="login_process.php">
  <input type="text" name="username" placeholder="Tên đăng nhập"><br>
  <input type="password" name="password" placeholder="Mật khẩu"><br>
  <button type="submit">Đăng nhập</button>
</form>

</body>
</html>

Tái sử dụng trong mọi form

Bạn có thể dùng flash message trong bất kỳ hành động nào cần phản hồi người dùng: tạo sản phẩm, gửi liên hệ, cập nhật hồ sơ… Rất tiện và gọn.


Lời kết

Vậy là bạn vừa học được cách tạo ra một hệ thống flash message cơ bản nhưng cực kỳ hữu ích. Kỹ thuật này không chỉ giúp nâng tầm trải nghiệm người dùng, mà còn làm cho website của bạn trông “có tâm” hơn rất nhiều.

Ở bài tiếp theo, chúng ta sẽ áp dụng những kỹ thuật vừa học để làm một form liên hệ giả lập gửi mail như một dự án nho nhỏ nhé!

Thảo luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Đăng ký nhận tin mới

Nhận bài học, tài nguyên và cơ hội việc làm qua email hàng tuần.

[global_subscribe_form]

Chúng tôi cam kết không spam. Bạn có thể hủy bất cứ lúc nào.