2011-11-22 12 views
8

Czy ktoś może podać kilka wskazówek dotyczących tworzenia niestandardowych reguł sprawdzania poprawności dla sygnatury Codeigniter.Reguły kodowania niestandardowych reguł sprawdzania poczty e-mail

Strona, nad którą pracuję, jest przeznaczona dla studentów i pozwala tylko użytkownikom na rejestrację, jeśli używają swojego uniwersyteckiego adresu e-mail.

Oto przykład tego typu walidacji usiłuję osiągnąć:

pozwolić tylko e-maile, które kończą się:

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

nadal jestem całkiem nowe do CodeIgniter i nie jestem pewien, jak aby utworzyć ten rodzaj sprawdzania poprawności.

Każda pomoc jest bardzo doceniana!

Dzięki

Odpowiedz

11

Jasne, jak to jest?

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

To działało idealnie! Dziękuję bardzo za poświęcony czas. – RipzCurlz

1

Jest to w rzeczywistości bardziej związane z PHP niż CI. Zasadniczo powinieneś napisać dopasowany wstawiony adres e-mail do każdego podanego ciągu końcowego. Jeśli istnieje dopasowanie - zezwól na rejestrację, jeśli nie - wypisz alert lub coś innego i nie pozwalaj na to.

1

Jeśli twoja uczelnia ma katalog LDAP, możesz zrobić uwierzytelnienie zamiast niej, zamiast mieć inną bazę. Single Sign On jest bardzo dobry system do użytku w instytucjach, takich jak uniwersytety

1

spróbować czegoś podobnego po,

$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; 
} 

Nadzieja pomaga

+0

Dziękuję za poświęcony czas i uwagi, jednak nie udało mi się uruchomić tego kodu. – 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

można potwierdzić e-mail przez html5 prosty kod

z wzorem

Powiązane problemy