Пользовательские правила проверки электронной почты Codeigniter - PullRequest
8 голосов
/ 22 ноября 2011

Может кто-нибудь дать несколько советов о том, как создать собственные правила проверки для Codeigniter.

Веб-сайт, над которым я работаю, предназначен для студентов университетов и позволяет пользователям регистрироваться только в том случае, если они используют свой электронный адрес университета.

Вот пример типа проверки, которую я пытаюсь достичь:

Разрешить только электронные письма, которые заканчиваются на:

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

Я все еще новичок в codeigniter, и я не уверен, как создать этот тип проверки.

Любая помощь очень ценится!

Спасибо

Ответы [ 6 ]

11 голосов
/ 22 ноября 2011

Конечно, как это?

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;

}
4 голосов
/ 26 августа 2014
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;
    }
1 голос
/ 22 ноября 2011

Попробуйте что-то вроде следующего,

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

Надеюсь, это поможет

1 голос
/ 22 ноября 2011

Если в вашем университете есть каталог LDAP, вы можете выполнять аутентификацию через него, вместо того, чтобы иметь другую базу. Single Sign On - это очень хорошая система для использования в таких учреждениях, как университеты

1 голос
/ 22 ноября 2011

На самом деле это больше связано с PHP, чем с CI.По сути, вы должны сопоставлять вставленный адрес электронной почты с каждой конечной строкой, которую вы указали.Если есть совпадение - разрешить регистрацию, если нет - вывести предупреждение или что-то еще и не разрешать его.

0 голосов
/ 03 ноября 2015

Вы можете проверить электронную почту с помощью простого кода html5

с рисунком

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...