Làm form liên hệ giả lập gửi mail

jk5587725

By jk5587725

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

Chúng ta đã quen dần với việc xử lý form, làm việc với nhiều file, và tổ chức code hợp lý. Trong bài học hôm nay, mình sẽ hướng dẫn bạn tạo một form liên hệ cơ bản — mô phỏng một tính năng rất phổ biến trong mọi website: cho người dùng gửi tin nhắn đến admin.

Dù chưa gửi mail thật, bài học này sẽ giúp bạn luyện tập:

  • Thu thập dữ liệu từ người dùng
  • Kiểm tra dữ liệu nhập vào
  • Hiển thị phản hồi (flash message)

Coi như bạn đang làm một “bưu điện mini” nội bộ nhé. Bài này cũng sẽ tạo nền tảng để sau này bạn tích hợp tính năng gửi mail thật bằng PHPMailer hoặc các dịch vụ bên ngoài.


Mục tiêu

  • Tạo form liên hệ gồm các trường cơ bản: Họ tên, Email, Nội dung
  • Xử lý dữ liệu form bằng PHP
  • Kiểm tra dữ liệu nhập vào
  • Hiển thị thông báo gửi thành công/ lỗi

Giao diện form

Trong file contact.php, bạn tạo một form HTML đơn giản:

<h2>Liên hệ với chúng tôi</h2>

<form action="contact.php" method="post">
  <label>Họ tên:</label><br>
  <input type="text" name="fullname" required><br><br>

  <label>Email:</label><br>
  <input type="email" name="email" required><br><br>

  <label>Nội dung:</label><br>
  <textarea name="message" rows="5" required></textarea><br><br>

  <button type="submit">Gửi liên hệ</button>
</form>

Hãy để form này gọn gàng, dễ hiểu, và không quên sử dụng required để kiểm tra cơ bản từ phía trình duyệt.


Xử lý dữ liệu liên hệ

Ngay trong file contact.php, bạn thêm đoạn xử lý phía trên phần HTML như sau:

session_start();
require 'functions.php'; // chứa hàm flash()

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  $fullname = trim($_POST['fullname']);
  $email    = trim($_POST['email']);
  $message  = trim($_POST['message']);

  if ($fullname && filter_var($email, FILTER_VALIDATE_EMAIL) && $message) {
    // Giả lập việc lưu vào CSDL hoặc gửi mail
    flash('success', 'Cảm ơn bạn đã liên hệ. Chúng tôi sẽ phản hồi sớm nhất!');
  } else {
    flash('error', 'Vui lòng điền đầy đủ và đúng thông tin.');
  }

  header('Location: contact.php');
  exit;
}

Chúng ta kiểm tra đơn giản:

  • Họ tên có tồn tại
  • Email đúng định dạng
  • Nội dung không rỗng

Sau đó dùng hàm flash() (đã học ở bài trước) để báo thành công hoặc lỗi.


Hiển thị thông báo

Ngay trên phần form, bạn thêm đoạn sau để hiển thị flash message:

<?php
if (isset($_SESSION['flash'])) {
  echo '<p style="color: green;">' . $_SESSION['flash']['message'] . '</p>';
  unset($_SESSION['flash']);
}
?>

Bạn có thể style thông báo này cho đẹp mắt hơn, ví dụ: màu đỏ với lỗi, màu xanh với thành công.


Gợi ý mở rộng

  • Lưu thông tin liên hệ vào file .txt hoặc database để luyện tập thêm.
  • Kiểm tra độ dài chuỗi nhập vào, tránh spam quá nhiều ký tự.
  • Sau này có thể kết nối PHPMailer để gửi email thật sự.

Tổng kết

Bài học hôm nay là một bước tiến mới: từ xử lý form đơn giản, bạn bắt đầu mô phỏng một luồng thực tế trong website — nhận và xử lý thông tin từ người dùng. Dù chưa gửi email thật, nhưng việc tổ chức form và phản hồi giúp bạn hiểu rõ quy trình.

Trong bài sau, ta sẽ cùng nhau làm một Mini Project: hệ thống liên hệ chuyên nghiệp, tổng hợp các kỹ năng đã học để xây dựng một module hoàn chỉnh và có thể tái sử dụng.

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.