Hướng dẫn form validation class php

Khi lập trình web, việc kiểm tra dữ liệu (validate) trên các form nhập liệu là rất quan trọng. Quá trình kiểm tra dữ liệu được nhập vào form sẽ đảm bảo dữ liệu được gửi lên server là đúng định dạng.

Có nhiều cách kiểm tra dữ liệu trên form, ta có thể sử dụng JavaScript để kiểm tra dữ liệu được nhập vào form.

Tuy nhiên, việc sử dụng JS cũng có những bất lợi, VD như người dùng có thể tắt tính năng JS tại trình duyệt.

Vì vậy, trong bài này mình sẽ hướng dẫn Validate form bằng PHP (hay còn gọi là server-side validation).

Bước 1: Tạo form PHP để chuẩn bị Validate

Start web server. Mở một trình soạn thảo, tạo mới một trang PHP, sau đó thiết kế một form giao diện như hình bên dưới (có thể thiết kế giao diện khác như ý  muốn).

Hướng dẫn form validation class php

Tạo form trong file PHP để chuẩn bị Validate


Bước 2: Viết mã PHP để kiểm tra dữ liệu trên form

Sau khi đã thiết kế form giao diện xong, hãy viết mã PHP để kiểm tra dữ liệu trên form.

Ta khai báo các biến để chứa dữ liệu của form được submit lên, nếu trường nào trên form thì sẽ báo lỗi ở cạnh trường đó.

Để hiển thị được thông báo lỗi, ta sử dụng các phần tử cạnh trường trên form, mỗi khi trường nào không nhập thì sẽ hiển thị lỗi tại phần tử tương ứng.

Ngoài ra, ta có thể hiển thị dữ liệu được nhập vào form lên trang web bằng cách viết mã PHP như sau:

Hướng dẫn form validation class php

Code PHP hiển thị thông tin mà người dũng đã nhập


Bước 3: Thực thi trang web để xem kết quả chương trình validate form bằng PHP

Sau khi đã viết mã xong, hãy thực thi trang web để kiểm tra kết quả. Đầu tiên khi ta nhập dữ liệu với các trường hợp không hợp lệ vào form, ta có thể nhìn thấy những thông báo lỗi được hiển thị trên form như hình bên dưới.

Hướng dẫn form validation class php

Form hiển thị thông báo nếu người dùng không nhập thông tin gì

Sau khi form được hiển thị, nếu người dùng không nhập dữ liệu vào các trường bắt buộc thì trang web sẽ hiển thị lỗi, còn nếu người dùng có nhập đầy đủ dữ liệu thì dữ liệu sẽ được hiển thị lên giao diện của trang.

Hướng dẫn form validation class php

Thông báo người dùng nhập dữ liệu không hợp lệ

Sau khi người dùng đã nhập dữ liệu hợp lệ lên form, ta có thể thấy dữ liệu đã được hiển thị như hình bên dưới.

Hướng dẫn form validation class php

Chương trình thực thi nếu người dùng nhập dữ liệu hợp lệ


Tổng kết

Như vậy là bạn đã biết cách validate form bằng PHP, cũng khá đơn giản phải không?

>>> Tất cả kiến thức và quy trình từng bước từng bước làm web với PHP sẽ được hướng dẫn cụ thể hơn ở Khóa học Lập trình PHP. Đăng ký ngay, học tập bài bản, làm việc chuyên nghiệp.

---

HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI

Dạy học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!

Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội

SĐT: 02435574074 - 0914939543 - 0353655150 

Email:

Fanpage: https://facebook.com/NIIT.ICT/

#niit #niithanoi niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp

Hướng dẫn form validation class php

Ở bài trước chúng ta đã tạo form để nhận dữ liệu của người dùng. Nhưng như mình đã nói. Dữ liệu của người dùng có thể “Không sạch”.

Vì thế, trong Lập trình web hay bất cứ lập trình ứng dụng nào khác. Chúng ta phải xác thực và làm sạch dữ liệu hay thường được gọi là validate form.

Trong hướng dẫn này, bạn sẽ tìm hiểu cách validate form trong PHP.

Hướng dẫn form validation class php
Hướng dẫn Validate Form trong PHP

Hướng dẫn Làm sạch và Xác thực dữ liệu (Validate) trong PHP

Bạn đã thấy trong các bài hướng dẫn trước, quá trình bắt và hiển thị dữ liệu của form đã gửi khá đơn giản.

Trong hướng dẫn này, bạn sẽ tìm hiểu cách triển khai một form liên hệ đơn giản trên trang web của mình cho phép người dùng gửi nhận xét và phản hồi của họ qua email.

Chúng ta sẽ sử dụng cùng hàm PHP mail() để gửi email.

Chúng ta cũng sẽ triển khai một số tính năng bảo mật cơ bản như Làm sạchXác thực dữ liệu đầu vào của người dùng để chắc chắn rằng người dùng không thể chèn dữ liệu độc hại (ví dụ như tiêm injection) có thể làm tổn hại đến bảo mật trang web hoặc có thể phá vỡ trang web.

Sau đây là tập lệnh tất cả trong một của chúng ta, nó thực hiện những việc sau:

  • Nó sẽ yêu cầu người dùng nhập nhận xét ​​của mình về trang web.
  • Kịch bản tương tự hiển thị form liên hệ và xử lý dữ liệu form liên hệ đã gửi.
  • Kịch bản làm sạchxác thực dữ liệu đầu vào của người dùng. Nếu bất kỳ trường bắt buộc nào (được đánh dấu *) bị thiếu hoặc xác thực không thành công do nhập sai, tập lệnh sẽ hiển thị lại form với thông báo lỗi cho trường tương ứng.
  • Kịch bản ghi nhớ các trường mà người dùng đã điền và điền trước các trường đó khi biểu mẫu được hiển thị lại do lỗi xác thực.
  • Nếu dữ liệu được gửi bởi người dùng có thể chấp nhận được và mọi thứ đều ổn, nó sẽ gửi email đến quản trị viên trang web và hiển thị thông báo thành công cho người dùng.

Tạo file có tên là contact.php và lưu trong thư mục gốc dự án của bạn:

array("regexp"=>"/^[a-zA-Z\s]+$/")))){
        return $field;
    } else{
        return FALSE;
    }
}    
function filterEmail($field){
    // Làm sạch Email
    $field = filter_var(trim($field), FILTER_SANITIZE_EMAIL);
    
    // Xác thực Email
    if(filter_var($field, FILTER_VALIDATE_EMAIL)){
        return $field;
    } else{
        return FALSE;
    }
}
function filterString($field){
    // Làm sạch nội dung
    $field = filter_var(trim($field), FILTER_SANITIZE_STRING);
    if(!empty($field)){
        return $field;
    } else{
        return FALSE;
    }
}
 
// Khai báo biến và khởi tạo các giá trị trống
$nameErr = $emailErr = $messageErr = "";
$name = $email = $subject = $message = "";
 
// Xử lý dữ liệu biểu mẫu khi biểu mẫu được gửi
if($_SERVER["REQUEST_METHOD"] == "POST"){
 
    // Xác thực tên người dùng
    if(empty($_POST["name"])){
        $nameErr = "Nhập tên của bạn.";
    } else{
        $name = filterName($_POST["name"]);
        if($name == FALSE){
            $nameErr = "Nhập tên hợp lệ.";
        }
    }
    
    // Xác thực Email
    if(empty($_POST["email"])){
        $emailErr = "Nhập địa chỉ Email.";     
    } else{
        $email = filterEmail($_POST["email"]);
        if($email == FALSE){
            $emailErr = "Nhập email hợp lệ.";
        }
    }
    
    // Xác thực tiêu đề
    if(empty($_POST["subject"])){
        $subject = "";
    } else{
        $subject = filterString($_POST["subject"]);
    }
    
    // Xác thực nội dung
    if(empty($_POST["message"])){
        $messageErr = "Điền nhận xét.";     
    } else{
        $message = filterString($_POST["message"]);
        if($message == FALSE){
            $messageErr = "Điền nhận xét hợp lệ.";
        }
    }
    
    // Check input errors before sending email
    if(empty($nameErr) && empty($emailErr) && empty($messageErr)){
        // Địa chỉ Email người nhận
        $to = '';
        
        // Tạo tiêu đề Email
        $headers = 'From: '. $email . "\r\n" .
        'Reply-To: '. $email . "\r\n" .
        'X-Mailer: PHP/' . phpversion();
        
        // Gửi Email
        if(mail($to, $subject, $message, $headers)){
            echo '

Nhận xét của bạn gửi thành công!

'; } else{ echo '

Không thể gửi. Vui lòng thử lại sau!

'; } } } ?> Contact Form

Contact Us

Please fill in this form and send us.

Giải thích code Validate Form trong PHP

Bạn có thấy, đây là đoạn mã Validate form đơn giản nhất. Chúng ta sẽ đi vào giải thích cụ thể:

  • filterName() function (line no-03) xác nhận giá trị đầu vào là tên người dùng. Tên hợp lệ chỉ có thể chứa các ký tự chữ cái (a-z, A-Z).
  • filterEmail() function (line no-14) xác nhận giá trị đầu vào như địa chỉ email.
  • filterString() function (line no-25) chỉ làm sạch giá trị đầu vào bằng cách loại bỏ thẻ HTML và các ký tự đặc biệt.
  • Thuộc tính action="contact.php" (line no-111) bên trong thẻ
    chỉ định rằng tệp contact.php sẽ được thực thi khi người dùng nhấn nút gửi.
  • Mã PHP bên trong giá trị thuộc tính của thẻ và textarea, ví dụ:
    Hiển thị giá trị được điền sẵn khi biểu mẫu được hiển thị lại xảy ra lỗi xác thực.
  • Mã PHP bên trong class .error, ví dụ Hiển thị lỗi theo trường tương ứng.

Phần còn trong mã Validate form trong PHP chúng ta đã tìm hiểu trong các chương trước. Để tìm hiểu thêm về vệ sinh và xác thực các bộ lọc, vui lòng xem tham khảo thêm PHP Fillter tại trang chủ của PHP tại đây

Tham khảo: Code hướng dẫn Validate form bằng PHP