/ / Codeigniter / Comment (1)

Form Validatiton trong CodeIgniter

Trong bài trước mình đã hướng dẫn các bạn cách tạo ra thư viện (library) cũng như load các thư viện đó ra như thế nào,trong bài này mình sẽ hướng dẫn các bạn sử dụng thư viện Form Validatiton để kiểm tra dữ liệu nhập vào từ form.Đây là thư viện rất quan trọng và được sử dụng rất nhiều,vì website nào cũng cần sử dụng tới nhập dữ liệu từ form và cần kiểm tra dữ liệu nhập vào.

Sử dụng thư viện form_validation

– Cũng như các thư viện khác trong CodeIgniter các bạn muốn sử dụng thư viện nào thì phải load thư viện đó ra,vậy giờ chúng ta cần load thư viện này ra theo cách sau:

$this->load->library('form_validation');

– Và sử dụng các phương thức trong thư viện này thì chúng ta sử dụng:

$this->form_validation->ten_phuong_thuc()

– Đi kèm với thư viện form_validation chúng ta cần phải load thêm helper form nữa

$this->load->helper('form');

Các phương thức quan trọng

1.Phương thức set_rules:
– Dùng để tạo ra những tập luật, tại đây chúng ta phải truyền vào 3 giá trị:

  • Vị trí 1: tên của thẻ trong form muốn kiểm tra,
  • Vị trí 2: tên khi xuất ra thông báo lỗi,
  • Vị trí 3: đây chính là giá trị quan trọng nhất ,đó chính là tập luật mà các bạn muốn đưa ra, ngoài ra có thể đưa ra nhiều tập luật bằng cách sử dụng dấu |.

Ví dụ:

$this->form_validation->set_rules('name', 'Họ và tên', 'required|min_length[8]');

Ở ví dụ trên chúng ta có thể diễn giải như sau: “Thẻ input có name=’name’ sẽ bắt buộc không được bỏ trống và dữ liệu nhập vào nhỏ nhất phải có 8 ký tự

Các tập luật hay sử dụng

  • required: Yêu cầu phải nhập liệu không được để trống
  • matches: Sử dụng khi 2 ô nhập liệu phải giống nhau,ví dụ nhập lại password
  • min_length: Giới hạn tối thiểu bao nhiêu ký tự khi nhập vào (min_length[6] )
  • max_length: Giới hạn tối đa bao nhiêu ký tự khi nhập vào (max_length[12])
  • numeric: Yêu cầu trong textbox phải nhập liệu là con số
  • valid_email: Email nhập liệu bắt buộc phải đúng định dạng
  • xss_clean: Xóa XSS của input, bảo mật
  • exact_length : Kiểm tra điều kiện bằng độ dài được gắn giá trị (exact_length[8])
  • greater_than : Kiểm tra điều kiện phải lớn hơn độ dài được gắn giá trị (greater_than[8])
  • less_than : Kiểm tra điều kiện phải nhỏ hơn độ dài được gắn giá trị (less_than[8])
  • callback_ : Gọi lại 1 hàm xử lý khác

Ngoài ra trong user guide của CI còn rất nhiều tập luật khác,có thể tham khảo thêm link:
http://ellislab.com/codeigniter/user-guide/libraries/form_validation.html

2.Phương thức run:
– Sau khi mà đã tạo ra các tập luật bằng phương thức set_rules(),thì phương thức run() có nhiệm vụ kiểm tra các tập luật trên có hợp lệ hay không, nếu không hợp lệ nó sẽ trả về kết quả là FALSE
3.Phương thức validation_errors:
– Trong trường hợp mà phương thức run() trả về FALSE có nghĩa là 1 trong các tập luật không hợp lệ,lúc này chúng ta có thể hiển thị ra thông báo lỗi bằng phương thức validation_errors()
4.Phương thức form_error:
– Cũng với chức năng hiển thị thông báo lỗi(nếu có) như validation_errors nhưng validation_errors thì hiển thị toàn bộ lỗi,trong khi đó form_error() chỉ hiển thị lỗi của 1 thẻ input nào đó lên các bạn có thể để lỗi này ngay bên dưới thẻ input đó,với cú pháp:

form_error(ten_input);

5.Phương thức set_value:
– Nếu như các bạn đã nhập dữ liệu hết vào 1 form nào đó,trong đó chỉ có 1 form không hợp lệ khi submit form các giá trị trong form sẽ bị mất hết lại phải nhập lại từ đầu như thế thật bất tiện phải không nào.Phương thức set_value() cho phép ta lưu lại nội dung của thẻ input nhập vào trước đó với cú pháp:

set_value(ten_input);

Ví dụ:

<input type="text"  name="email" value="<?php echo set_value('email')?>" />

Ví dụ:Thực hiện chức năng đăng ký thành viên
Các bạn tạo 1 view đăng ký thành viên với nội dung sau (views/user/register.php):

     <form name='register' action='' method='POST'>
              Tên đăng nhập: <input type="text" name="username"  value="<?php echo set_value('username')?>">
              <div class="error" id="username_error"><?php echo form_error('username')?></div>

              Mật khẩu: <input type="password" name="password">
             <div class="error" id="password_error"><?php echo form_error('password')?></div>

              Nhập lại mật khẩu: <input type="password" name="re_password">
              <div class="error" id="re_password_error"><?php echo form_error('re_password')?></div>
              Họ tên: <input type="text" name="name"  value="<?php echo set_value('name')?>">
              <div class="error" id="name_error"><?php echo form_error('name')?></div>

              Số điện thoại: <input type="text" name="phone"  value="<?php echo set_value('phone')?>">
              <div class="error" id="phone_error"><?php echo form_error('phone')?></div>

              Email: <input type="text" name="email"  value="<?php echo set_value('email')?>">
              <div class="error" id="email_error"><?php echo form_error('email')?></div>

             <input type="submit" value="Đăng ký">
     </form>

Và chúng ta sẽ tạo 1 controler User để kiểm tra dữ liệu nhập vào từ form nhé:

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');  

class User extends CI_Controller
{
	public function __construct()
	{
	   parent::__construct();
	}
        /*
	 * Phuong thuc dang ky thanh vien
	*/
	public function register()
	{
	   //load thu vien validation
	   $this->load->library('form_validation');
	   $this->load->helper('form');

	   //tao cac tap luat
           //email:  bắt buộc - đúng định dạng email
	   $this->form_validation->set_rules('email', 'Email', 'required|valid_email|xss_clean');
           //name:  bắt buộc - tối thiểu 8 ký tự
	   $this->form_validation->set_rules('name', 'Họ và tên', 'required|min_length[8]|xss_clean');
           //phone:  bắt buộc - tối thiểu 8 ký tự - phai la số
	   $this->form_validation->set_rules('phone', 'Số điện thoại', 'required|min_length[8]|numeric|xss_clean');
           //password:  bắt buộc - tối thiểu 6 ký tự - phai la số
	   $this->form_validation->set_rules('password', 'Mật khẩu', 'required|min_length[6]|numeric|xss_clean');
           //re_password:  bắt buộc - phải giống với password
	   $this->form_validation->set_rules('re_password', 'Nhập lại mật khẩu', 'required|matches[password]|xss_clean');
	   //chạy và kiểm tra các tập luật
	   if($this->form_validation->run())
	   {
                //các dữ liệu nhập hợp lệ
                //đăng ký thành viên thành công
        }
      //hiển thị view
      $this->load->view('user/register');
}

Các bạn có thể thực hành bài này và sẽ thấy kết quả ngay thôi 😀
Kết thúc bài viết: Qua bài này chúng ta hoàn toàn có thể kiểm tra dữ liệu nhập vào từ form 1 cách dễ dàng,chính xác và bảo mật nữa.Đây là phần rất quan trọng lên các bạn cần thực hành nhiều để hiểu rõ hơn nhé.Bài sau mình sẽ giới thiệu cho các bạn về thư viện Session trong CodeIgniter và ứng dụng thực tế là chức năng đăng nhập



05/09/2014
Written by nobitacnt

Trong bài viết không tránh khỏi những câu từ chưa chính xác,mong nhận được sự góp ý để website hoàn thiện hơn.Nếu thấy bài viết có ích với bạn hãy like và share để ủng hộ nhé :D.

Bài viết chùng chuyên mục

One comment

  1. Hưởng says:
     /  Reply

    sao của mình ko thêm mới đc thành viên

Gửi bình luận

Giới thiệu

Mình tạo ra blog này với mong muốn chia sẻ và học hỏi kinh nghiệm trong quá trình thiết kế website. Website đang trong quá trình phát triển chân thành cảm ơn mọi sự góp ý của các bạn để làm cho website ngày càng hoàn thiên.

DMCA.com Protection Status
Theo dõi qua Email

Tổng hợp các bài viết về

Hoc php - CodeIgniter Framework - Laravel Framework - PHP va MYSQL