Thứ Hai, 13 tháng 8, 2018

PHP - Xác thực

ảnh minh họa

Học lập trình PHP : Xác thực là một trong những tác vụ thường xuyên và lặp lại nhiều nhất trong một ứng dụng web. Người dùng nhập dữ liệu cần thiết vào biểu mẫu và gửi nó. Sau đó, ứng dụng web cần xác thực dữ liệu trước khi xử lý dữ liệu.

Ví dụ: người dùng nhập dữ liệu nhân viên và post_action cần xác thực trước khi lưu nó vào cơ sở dữ liệu. PHP cung cấp một lớp thực sự đơn giản, Validation cho mục đích này.

Trong PHP, khái niệm xác thực là rất đơn giản và nó cung cấp các phương thức khác nhau thông qua lớp Validation để xác nhận hợp lệ biểu mẫu. Sau đây là quy trình xác thực,

Bước 1 - Tạo đối tượng Validation mới bằng phương thức forge .
$val = Validation::forge();
Bước 2 - Thêm các trường cần được xác nhận bằng cách sử dụng phương thức thêm.
$val->add('name', 'Employee name');
Bước 3 - Đặt các quy tắc xác nhận cho các trường được thêm bằng phương thức add_rule .
$val->add('name', 'Employee name')->add_rule('required'); 
$val->add('age', 'Employee age')->add_rule('required') 
   ->add_rule('numeric_min', 20) 
   ->add_rule('numeric_max', 30); 
Bước 4 - Gọi phương thức chạy để xác thực dữ liệu.
// run validation on just post 
if ($val->run()) { 
   // success 
} else { 
   // falier 
} 
Bước 5 - Sử dụng xác thực và lỗi để có được các trường hợp lệ và không hợp lệ tương ứng.
$vars = $val->validated(); 
$vars = $val->error();

Quy tắc

PHP chứa rất nhiều quy tắc để xác thực và cũng cung cấp tùy chọn tạo quy tắc mới. Các quy tắc được hỗ trợ bởi lớp Validation như sau,

bắt buộc - Giá trị được nhập

required_with - Đặt trường khác làm trường đồng hành. Nếu trường được đặt, thì trường đồng hành cũng cần được đặt

match_value - Đặt giá trị được so khớp với giá trị của trường

match_pattern - Đặt giá trị được đối sánh dưới dạng cụm từ thông dụng với giá trị của trường

match_field - Đặt giá trị của một trường khác làm giá trị được so khớp với giá trị của trường

match_collection - Đặt giá trị được so khớp dưới dạng tập hợp với giá trị của trường

min_length - Đặt độ dài tối thiểu của giá trị của trường

max_length - Đặt độ dài tối đa của giá trị của trường

exact_length - Đặt độ dài chính xác của giá trị của trường

valid_date - Đặt giá trị của trường thành ngày hợp lệ

valid_email - Đặt giá trị của trường thành một email hợp lệ

valid_emails - Đặt giá trị của trường thành các email hợp lệ, được phân tách bằng dấu phẩy

valid_url - Đặt giá trị của trường thành URL hợp lệ

valid_ip - Đặt giá trị của trường thành IP hợp lệ

numeric_min - Đặt giá trị nhỏ nhất của giá trị của trường

numeric_max - Đặt giá trị lớn nhất của giá trị của trường

numeric_between - Đặt giá trị tối thiểu và tối đa của giá trị của trường

valid_string - Tương tự như regex nhưng đơn giản hơn
$val->add('username', 'User name')->add_rule('valid_string', array('alpha, dots');

Ở đây, alpha đề cập đến các ký tự chữ cái và dấu chấm đề cập đến (.). Chuỗi hợp lệ chỉ là chuỗi chứa ký tự chữ cái và (.). Các tùy chọn khác là chữ hoa, chữ thường, đặc biệt, số, dấu cách, v.v.

Ví dụ làm việc

Chúng tôi có thể cập nhật tính năng thêm nhân viên để bao gồm xác thực. Chỉ cần cập nhật phương thức post_add của bộ điều khiển nhân viên như sau.
public function post_add() { 
   $val = Validation::forge(); 
   $val->add('name', 'Employee name')->add_rule('required'); 
   $val->add('age', 'Employee age')->add_rule('required')
      ->add_rule('numeric_min', 20) 
      ->add_rule('numeric_max', 30);  
   
   if ($val->run()) { 
      $name = Input::post('name'); 
      $age = Input::post('age');  
      $model = new model_employee(); 
      $model->name = $name; 
      $model->age = $age; 
      $model->save();  
      Response::redirect('employee/list'); 
   } else { 
      Response::redirect('employee/add'); 
   } 
}
Ở đây, chúng tôi đã chỉ định tên và độ tuổi làm trường bắt buộc. Độ tuổi cần phải nằm trong khoảng từ 20 đến 30.

Nếu cả hai quy tắc đều hợp lệ, thì dữ liệu của nhân viên sẽ được lưu và chuyển hướng đến trang danh sách nhân viên. Nếu không, dữ liệu của nhân viên sẽ bị từ chối và được chuyển hướng để thêm trang nhân viên.

Không có nhận xét nào:

Đăng nhận xét

lập trình PHP cho các nhà phát triển PERL

Chương này sẽ liệt kê những điểm tương đồng và khác biệt chính giữa PHP và PERL. Điều này sẽ giúp các nhà phát triển PERL hiểu PHP rất nhanh...