I. Giới thiệu
Trong xử lý form có các trường yêu cầu bắt buộc không được để trống hoặc phải nhập địa chỉ email, địa chỉ web, v.v… các trường này sẽ được xử lý bằng javascript (client side) hoặc PHP (server side). Trong bài này sẽ giới thiệu cách xử lý trong PHP.
Ví dụ có form điền thông tin cá nhân gồm các trường sau:
- Họ và tên – text box
- Giới tính – radio button
- Địa chỉ – text box
- Email – text box
- Website – text box
Các trường trên là bắt buộc phải nhập. Chúng tôi thiết kế form như sau:
<html> <head> <meta charset="utf-8" /> <title>Form nhập thông tin</title> </head> <body> <form method="POST"> Họ tên: <input type="text" name="hoten" />*<br /> Giới tính: <input type="radio" name="gioitinh" value="nam" /> Nam <input type="radio" name="gioitinh" value="nu" /> Nữ *<br/> Địa chỉ: <input type="text" name="diachi" />*<br /> Email: <input type="text" name="email" />*<br /> <input type="submit" value="Gửi" /> </form> </body> </html>
Hình 61 Form điền thông tin
Với mỗi trường chúng tôi đặt thêm một dấu * với ý nghĩa đây là trường bắt buộc phải nhập.
II. Kiểm tra submit form
Để kiểm tra người dùng có gửi dữ liệu bằng cách submit form (bấm nút gửi) hay không, dùng câu lệnh sau để kiểm tra:
<?php if($_SERVER['REQUEST_METHOD'] == 'POST') { // DO SOMETHING; } ?>
Câu lệnh trên kiểm tra nếu phương thức yêu cầu trang web là POST (người dùng bấm nút gửi form có method là POST) thì sẽ thực thi đoạn lệnh bên trong.
III. Kiểm tra yêu cầu nhập
a. Kiểm tra bắt buộc nhập dữ liệu
Để kiểm tra người dùng có nhập dữ liệu vào một trường nào đó, dùng hàm empty để kiểm tra:
<?php if($_SERVER['REQUEST_METHOD'] == 'POST') { if(empty($_POST['hoten']) == false) { // do something; } else { // show error } } ?>
Hàm empty kiểm tra một biến nào đó bất kì có giá trị rỗng hay không. Ở đoạn lệnh trên sử dụng hàm empty để kiểm tra biến $_POST[‘hoten’] có rỗng hay không. Nếu không rỗng thì thực thi đoạn lệnh bên trong, nếu rỗng sẽ thực thi đoạn lệnh báo lỗi.
b. Kiểm tra email
PHP cung cấp sẵn một số hàm để kiểm tra dữ liệu nhập liệu vào, trong đó có hàm kiểm tra email:
if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) == false) { // show error }
c. Xuất thông báo lỗi
Có nhiều cách xuất thông báo lỗi tuy nhiên chúng tôi sẽ giới thiệu đến bạn cách căn bản và thông dụng nhất.
Ý tưởng như sau:
- Tạo các biến báo lỗi tương ứng với từng trường và gán giá trị rỗng.
- Echo các biến này bên cạnh các trường nhập liệu.
- Vì ban đầu các biến đều rỗng nên không in ra thông báo nào hết.
- Khi kiểm tra, nếu người dùng không nhập một trường nào đó, các biến báo lỗi tương ứng với trường rỗng đó sẽ được gián bằng câu báo lỗi.
Chúng tôi sẽ đi lần lượt các bước để bạn có thể nắm được ý tưởng trên. Đầu tiên chúng tôi sẽ tạo các biến báo lỗi có giá trị rỗng và echo ra vị trí tương tứng. Hãy quay lại đoạn code ở phần I và bổ sung thêm như sau:
<?php $errHoten = $errGioitinh = $errDiachi = $errEmail = ""; // rỗng ?> <html> <head> <meta charset="utf-8" /> <title>Form nhập thông tin</title> </head> <body> <form method="POST"> Họ tên: <input type="text" name="hoten" />*<?php echo $errHoten; ?><br /> Giới tính: <input type="radio" name="gioitinh" value="nam" /> Nam <input type="radio" name="gioitinh" value="nu" /> Nữ *<?php echo $errGioitinh; ?><br/> Địa chỉ: <input type="text" name="diachi" />*<?php echo $errDiachi; ?><br /> Email: <input type="text" name="email" />*<?php echo $errEmail; ?><br /> <input type="submit" value="Gửi" /> </form> </body> </html>
Như bạn thấy, chúng tôi đã tạo các biến có giá trị rỗng và echo ở các vị trí tương ứng. Tiếp theo chúng tôi sẽ kiểm tra các điều kiện như đã giới thiệu ở các mục trên và gán lỗi tương ứng.
<?php $errHoten = $errGioitinh = $errDiachi = $errEmail = ""; // rỗng if($_SERVER['REQUEST_METHOD'] == 'POST') { if(empty($_POST['hoten']) == false) { // do something; } else { $errHoten = "Họ tên không được rỗng"; } if(empty($_POST['gioitinh']) == false) { // do something; } else { $errGioitinh = "Giới tính phải chọn"; } if(empty($_POST['diachi']) == false) { // do something; } else { $errDiachi = "Địa chỉ không được rỗng"; } if(empty($_POST['email']) == false) { // do something; } else { $errEmail = "Email không được rỗng"; } } ?> <html> <head> <meta charset="utf-8" /> <title>Form nhập thông tin</title> </head> <body> <form method="POST"> Họ tên: <input type="text" name="hoten" />*<?php echo $errHoten; ?><br /> Giới tính: <input type="radio" name="gioitinh" value="nam" /> Nam <input type="radio" name="gioitinh" value="nu" /> Nữ *<?php echo $errGioitinh; ?><br/> Địa chỉ: <input type="text" name="diachi" />*<?php echo $errDiachi; ?><br /> Email: <input type="text" name="email" />*<?php echo $errEmail; ?><br /> <input type="submit" value="Gửi" /> </form> </body> </html>
Hãy thử bỏ trống hết các trường và bấm nút Gửi.
Hình 62 Thông báo lỗi
Ở đây chúng tôi đã giới thiệu cách hiển thị thông báo lỗi với trường hợp rỗng. Bạn hãy thử áp dụng những phần đã giới thiệu như kiểm tra họ tên, email để kiểm tra đầy đủ cho form này nhé.
Ngoài ra bạn cũng có thể thêm một số mã HTML để thông báo tô đỏ gây sự chú ý người dùng.
Hình 63 Các thông báo được tô đỏ