Hàng ngày, hàng tháng...Chúng ta luôn có nhu cầu đăng nhập vào đâu đó: Facbook, Instagram, Shopee, Lazada, Grab, Ngân hàng, Bảo hiểm...
Tạo Form luôn là đề tài được ưu ái trong lập trình. Nhưng đôi khi "thâm cung bí sử" của Form cũng khiến ta dở khóc dở cười. Bạn tạo một form rất tử tế:- có input
- có nút submit
- có file PHP xử lý
Bạn viết:
$username = $_POST['username'];
echo $username;
Bấm Submit…
👉 Và…
👉 Không có gì xảy ra. Trống trơn.
- Không lỗi
- Không warning
- Không crash
👉 Chỉ là… sự im lặng đáng sợ 😶
Bạn bắt đầu:
"Ủa PHP bị gì vậy??? Mọi thứ đều đúng hết mà??"
👉 Không. PHP không sai.
👉 Bạn sai… nhưng theo cách ai cũng từng sai 😅
Lỗi PHP không nhận dữ liệu từ form (POST/GET rỗng) thường do:
- form chưa submit
- sai method (GET/POST)
- sai name input
- form action sai
- dữ liệu không được gửi
Ví dụ đời thường
👉 Bạn gửi đơn xin việc
- ghi đầy đủ thông tin
- bỏ vào phong bì
👉 Nhưng…
👉 không gửi đi
👉 Sau đó bạn ngồi chờ phản hồi 🤡
👉 PHP cũng vậy:
Bạn "viết form" nhưng chưa chắc "đã gửi dữ liệu"
7 nguyên nhân phổ biến nhất (Giả sử ta có trang nhận dữ liệu và xử lý form là process.php)
Bạn có thể coi qua phần lý thuyết PHP để tạo và upload các trang lên hosting. Ta sẽ tạm coi nội dung của process.php:
<html>
<body>
Welcome <?php echo $_POST["name"]; ?><br>
</body>
</html>
Và nội dung của test.php là
<html>
<body>
<form action="process.php" method="post">
Name: <input type="text" name="name"><br>
<input type="submit">
</form>
</body>
</html>
❌ 1. Chưa submit form (mở trực tiếp file PHP)
👉 Bạn vào thẳng:
process.php
👉 Nhưng form chưa submit
→ $_POST = rỗng
→ $Chỉ thấy chữ Welcome mà thôi.
👉 Fix:
truy cập qua form
hoặc check trước:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
// xử lý
}
❌ 2. Thiếu method="POST" (hoặc GET)
👉 HTML:
<form action="process.php">
👉 Mặc định là GET
→ nhưng bạn lại dùng:
$_POST['username']
👉 Sai "kênh" 😅
👉 Fix:
<form action="process.php" method="POST">
❌ 3. Input không có name
👉 HTML:
<input type="text">
👉 Không có name
→ không gửi dữ liệu
👉 PHP:
$_POST['username']
→ không tồn tại
👉 Fix:
<input type="text" name="username">
❌ 4. Sai tên input (cực hay gặp)
👉 HTML:
<input name="user">
👉 PHP:
$_POST['username']
👉 "user" ≠ "username" 🤡
❌ 5. Form action sai
👉 HTML:
<form action="abc.php">
👉 Nhưng code xử lý nằm ở process.php
👉 Dữ liệu đã gửi… nhưng gửi sai nơi 😅
❌ 6. Dùng button sai kiểu
👉 HTML:
<button>Submit</button>
👉 Trong một số trường hợp
→ không submit form
👉 Fix chắc ăn:
<button type="submit">Submit</button>
❌ 7. Hosting / cache (InfinityFree case)
👉 Bạn sửa form
👉 upload lên InfinityFree
👉 Nhưng web vẫn chạy bản cũ
👉 Bạn:
"Mình sửa rồi mà???"
👉 Fix:
Ctrl + F5
clear cache
upload lại
Code mẫu đúng (test được ngay)
🧾 form.html
<form action="process.php" method="POST">
<input type="text" name="username" placeholder="Nhập username">
<button type="submit">Gửi</button>
</form>
⚙️ process.php
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST['username'] ?? 'Chưa nhập';
echo "Bạn nhập: " . $username;
} else {
echo "Chưa submit form 😅";
}
?>
👉 Upload lên → chạy thử là hiểu ngay
Debug nhanh (cực hiệu quả)
👉 Thêm dòng này:
var_dump($_POST);
👉 Nếu thấy:
array(0) { }
→ form chưa gửi dữ liệu
👉 Nếu thấy có dữ liệu
→ lỗi nằm chỗ khác
Checklist "cứ theo là ra"
👉 PHP không nhận dữ liệu?
- Đã submit form chưa?
- Có method="POST" chưa?
- Input có name chưa?
- Tên có khớp không?
- Form action đúng chưa?
- Button có phải type="submit"?
- Có cache không?
👉 90% lỗi nằm ở 1–4 😏
Một sự thật hơi "đau"
👉 PHP không nhận dữ liệu
→ hiếm khi là lỗi PHP
👉 Mà thường là:
HTML sai 😅
Tổng kết
PHP không nhận dữ liệu không phải lỗi khó
👉 Nó chỉ là:
- form chưa gửi
- hoặc gửi sai
👉 Nhớ:
- name rất quan trọng
- method phải đúng
- debug bằng var_dump 😏
❓ FAQ nhanh
POST và GET khác nhau gì?
→ POST gửi "ngầm", GET hiện trên URL
Có thể dùng cả POST và GET không?
→ Có, nhưng nên rõ ràng
Vì sao local chạy mà host không chạy?
→ thường do cache hoặc upload sai
👉 Bạn có thể cũng đang gặp:
Undefined index trong PHP
Form submit nhưng không lưu database
MySQL không connect
(👉 đã có trong các bài trước)
Không có nhận xét nào:
Đăng nhận xét