2011-11-22 23 views
8

¿Puede alguien dar algunos consejos sobre cómo crear reglas de validación personalizadas para Codeigniter?Reglas de validación de correo electrónico personalizadas de Codeigniter

El sitio web en el que estoy trabajando es para estudiantes universitarios y solo permite a los usuarios registrarse si usan su dirección de correo electrónico de la universidad.

Este es un ejemplo del tipo de validación que estoy tratando de lograr:

permitir que sólo los mensajes de correo electrónico que terminan con:

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

Estoy todavía bastante nuevo en CodeIgniter y no estoy seguro de cómo para crear este tipo de validación

¡Cualquier ayuda es muy apreciada!

Gracias

Respuesta

11

Claro, ¿cómo es esto?

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

¡Esto funcionó a la perfección! Muchas gracias por tu tiempo. – RipzCurlz

1

Esto en realidad está más relacionado con PHP que con CI. Básicamente, debe encajar la coincidencia de la dirección de correo electrónico insertada con cada cadena final que proporcionó. Si hay una coincidencia, permita el registro, si no, envíe una alerta o algo así y no lo permita.

1

Si su universidad tiene un directorio LDAP, entonces usted puede hacer autenticación a través de ella, en lugar de tener otra base. Single Sign On es un sistema muy bueno para su uso en instituciones tales como universidades

1

intentar algo como siguiente,

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

creo que sirve

+0

Gracias por su tiempo y aportes, sin embargo, no pude lograr que este código funcione. – 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

puede validar correo electrónico por html5 código simple

con el patrón

Cuestiones relacionadas