2011-11-22 33 views
8

Ai đó có thể vui lòng cung cấp một số tư vấn về cách tạo quy tắc xác thực tùy chỉnh cho Codeigniter.Quy tắc xác thực email tùy chỉnh mã vạch

Trang web mà tôi đang làm là dành cho sinh viên đại học và chỉ cho phép người dùng đăng ký nếu họ sử dụng địa chỉ email đại học của họ.

Dưới đây là một ví dụ về các loại xác nhận tôi đang cố gắng để đạt được:

Chỉ cho phép email kết thúc bằng:

array(
    '0' => '@uni-email-1.com', 
    '1' => '@uni-email-2.com', 
    '2' => '@uni-email-3.com', 
    '3' => '@uni-email-4.com', 
); 

tôi vẫn còn khá mới mẻ đối CodeIgniter và tôi không chắc chắn như thế nào để tạo loại xác thực này.

Bất kỳ hỗ trợ nào được đánh giá rất nhiều!

Cảm ơn

Trả lời

11

Chắc chắn, đây là cách nào?

function index() 
{ 
    $this->load->helper(array('form', 'url')); 

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


    $this->form_validation->set_rules('email', 'Email', 'required'); 
    $this->form_validation->set_rules('email', 'Email', 'valid_email'); 
    $this->form_validation->set_rules('email', 'Email', 'callback_email_check'); 

    if ($this->form_validation->run() == FALSE) 
    { 
     //fail 
    } 
    else 
    { 
     //success 
    } 
} 

function email_check($str) 
{ 

    if (stristr($str,'@uni-email-1.com') !== false) return true; 
    if (stristr($str,'@uni-email-2.com') !== false) return true; 
    if (stristr($str,'@uni-email-3.com') !== false) return true; 

     $this->form_validation->set_message('email', 'Please provide an acceptable email address.'); 
     return FALSE; 

} 
+0

Điều này làm việc hoàn hảo! Cảm ơn bạn rất nhiều vì đã dành thời gian. – RipzCurlz

1

Điều này thực sự liên quan nhiều hơn đến PHP so với CI. Về cơ bản, bạn nên chuỗi khớp với địa chỉ email được chèn vào mỗi chuỗi kết thúc mà bạn đã cung cấp. Nếu có một trận đấu - cho phép đăng ký, nếu không - xuất cảnh báo hoặc một cái gì đó và không cho phép nó.

1

Nếu trường đại học của bạn có thư mục LDAP, bạn có thể thực hiện xác thực thay vì có cơ sở khác. Single Sign On là một hệ thống rất tốt để sử dụng trong các tổ chức như các trường đại học

1

Hãy thử một cái gì đó như sau,

$formatArr = array("@uni-email-1.com", "@uni-email-2.com" "@uni-email-3.com"); 

$this->form_validation->set_rules('email', 'Email', 'callback__check_email'); 

//then the validation function 
function _check_email() { 
    $email = $this->input->post("email"); 
    $emailLastPart = array_pop(explode("@", $email)); 
    if(!in_array($emailLastPart, $formatArr)) { 
     $this->form_validation->set_message('email', 'Please provide valid email address.'); 
     return FALSE; 
    } 
    return TRUE; 
} 

Hy vọng nó giúp

+0

Cảm ơn bạn đã dành thời gian và đầu vào của mình, tuy nhiên tôi không thể làm cho mã này hoạt động. – RipzCurlz

4
public function index() 
    { 
     $this->load->helper(array('form', 'url')); 

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

     $this->form_validation->set_rules('email', 'Email', 'required|callback_email_check'); 

     if ($this->form_validation->run() == FALSE) 
     { 
      $this->load->view('form'); 
     } 
     else 
     { 
      $this->load->view('formsuccess'); 
     } 
    } 

    public function email_check($email) 
    { 
     if(stristr($str,'@uni-email-1.com') !== false) return true; 
     if(stristr($str,'@uni-email-2.com') !== false) return true; 
     if(stristr($str,'@uni-email-3.com') !== false) return true; 

     $this->form_validation->set_message('email', 'Please provide an acceptable email address.'); 
     return FALSE; 
    } 
0

Bạn có thể xác nhận email bằng html5 mã đơn giản

với mẫu

Các vấn đề liên quan