Hướng dẫn dùng female validation trong PHP
Trong bài này và các phần tiếp theo sẽ trình bày cách sử dụng PHP để xác thực các dữ liệu biểu mẫu Show Xác thực biểu mẫu PHP
Biểu mẫu HTML mà chúng ta sẽ làm việc trong các chương này, chứa các trường input khác nhau: trường văn bản bắt buộc và tùy chọn, nút radio và nút submit: Các quy tắc xác thực cho biểu mẫu trên như sau
Trước tiên, chúng ta sẽ xem xét mã HTML thuần túy cho biểu mẫu: Trường văn bảnCác trường name, email và website là các yếu tố nhập văn bản và trường comment là một vùng văn bản. Mã HTML như sau: Name: type="text" name="name">
E-mail: type="text" name="email">
Website: type="text" name="website">
Comment: Các nút RadioCác trường giới tính là các nút radio và mã HTML như sau: Gender:
type="radio" name="gender" value="female">Female
type="radio" name="gender" value="male">Male
type="radio" name="gender" value="other">Other Phần tử formMã HTML của biểu mẫu form như sau Khi biểu mẫu được gửi, dữ liệu biểu mẫu được gửi với method = "post".
Vì vậy,
Lưu ý quan trọng về biểu mẫu PHPBiến Nếu
Giả sử chúng ta có biểu mẫu sau trong một trang có tên "test_form.php": Bây giờ, nếu người dùng nhập URL bình thường vào thanh địa chỉ như "http://www.example.com/test_form.php", thì đoạn mã trên sẽ được dịch thành: Tuy nhiên, hãy xem xét rằng người dùng nhập URL sau vào thanh địa chỉ: http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E Trong trường hợp này, mã trên sẽ được dịch thành: Mã này thêm một thẻ tập lệnh và một lệnh cảnh báo. Và khi tải trang, mã JavaScript sẽ được thực thi (người dùng sẽ thấy một hộp cảnh báo). Đây chỉ là một ví dụ đơn giản và vô hại về cách khai thác biến PHP_SELF. Hãy lưu ý rằng bất kỳ mã JavaScript nào cũng có thể được thêm vào bên trong thẻ Làm thế nào để tránh bị khai thác biến $_SERVER ["PHP_SELF"]?Chúng ta có thể tránh khai thác biến Mã HTML form sẽ giống như sau: Hàm Nỗ lực khai thác không thành công và không có tác hại nào được thực hiện! Xác thực dữ liệu form với PHPĐiều đầu tiên chúng ta sẽ làm là chuyển tất cả các biến thông qua hàm Khi chúng ta sử dụng hàm location.href('http://www.hacker.com') Điều này sẽ không được thực thi, vì nó sẽ được thể hiện dưới dạng mã thoát HTML, như thế này: <script>location.href('http://www.hacker.com')</script> Mã hiện an toàn để được hiển thị trên một trang hoặc bên trong e-mail. Chúng ta cũng sẽ thực hiện hai việc nữa khi người dùng gửi biểu mẫu:
Bước tiếp theo là tạo một hàm sẽ thực hiện tất cả việc kiểm tra cho chúng ta (điều này thuận tiện hơn nhiều so với việc viết đi viết lại cùng một đoạn mã). Chúng ta sẽ đặt tên cho hàm là Bây giờ, chúng ta có thể kiểm tra từng biến Ví dụ Ví dụ
$name = $email = $website = $gender = $comment = "";
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$name = test_input($_POST['name']);
$email = test_input($_POST['email']);
$gender = test_input($_POST['gender']);
$comment = test_input($_POST['comment']);
$website = test_input($_POST['website']);
}
function test_input($data){
$data = trim($data);
$data = addslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
Xem kết quả Lưu ý rằng khi bắt đầu tập lệnh, chúng ta kiểm tra xem biểu mẫu đã được gửi bằng cách sử dụng biến Tuy nhiên, trong ví dụ trên, tất cả các trường đầu vào là tùy chọn. Tập lệnh hoạt động tốt ngay cả khi người dùng không nhập bất kỳ dữ liệu nào. Bước tiếp theo là yêu cầu các trường nhập và tạo thông báo lỗi nếu cần. |