Пожалуйста, помогите мне в создании формы, которая позволяет пользователю отправлять действительное письмо.
Когда кто-то пытается ввести идентификатор электронной почты, он должен быть проверен перед отправкой в базу данных. Некоторые примеры идентификаторов нежелательной почты: [email protected]
, [email protected]
и т.п.
Если пользователь пытается ввести идентификатор электронной почты, как упомянуто в приведенном выше примере, необходимо проверить, является ли он действительным идентификатором электронной почты или нет, а также проверить, существует ли уже пользователь с идентификатором электронной почты?
Пожалуйста, помогите мне построить код в php codeigniter.
В CI есть встроенная функциональность, которая обрабатывает это для вас. Он находится в библиотеке проверки формы.
Увидеть: https://ellislab.com/codeigniter/user-guide/libraries/form_validation.html
$this->form_validation->set_rules('email', 'Email', 'required|valid_email|is_unique[users.email]');
обратите внимание на правило valid_email, которое уже предоставлено для вас.
Надеюсь, поможет.
Вы также можете проверить домен электронной почты с помощью DNS.
public function check_domain($email)
{
if( ! (bool) checkdnsrr(preg_replace('/^[^@]++@/', '', $email), 'MX'))
{
return FALSE;
}
return TRUE;
}
Прежде всего, я хотел бы дать вам функцию проверки доменов адресов электронной почты, независимо от того, существуют они или нет, и после этого я попытаюсь выяснить процесс проверки того, был ли пользователь зарегистрирован ранее или нет, и дать ссылку на checkdnsrr ().
Я разделил свой ответ на три части
Часть 1
Попробуйте эту функцию с несколькими разными доменными именами. Этот код работает для меня, и я надеюсь, что
function validate_email($email="[email protected]"){
$exp = "^[a-z\'0-9]+([._-][a-z\'0-9]+)*@([a-z0-9]+([._-][a-z0-9]+))+$";
if(stristr($exp,$email)){
if(checkdnsrr(array_pop(explode("@",$email)),"MX")){
echo 'good to go';
}else{
echo 'domain cant be verified';
}
}else{
echo 'sorry regular expression does not match';
}
}
Часть 2
Если вы хотите сделать это с помощью jquery, посетите JQuery дождь и выберите плагин, что вам нравится, но если вам нравится это в html5, просто
<input type="email" id="email" name="email" required>
В html5 электронная почта автоматически подтвердит, что пользователь поместил письмо, увидев @
войдите в него.
А также required
тег просто увидит, что любой пользователь полностью заполнил поле электронной почты, прежде чем продолжить.
Часть 3
Вот код для того, чтобы не регистрировать те электронные письма, которые уже зарегистрированы.
function subscriber()
{
$subscriber=$this->input->post('subscriber');
$query=$this->cartmodel->get_record('subscriber',array('email'=>$subscriber));
if($query)
{
$this->session->set_flashdata('error', '<script type="text/javascript">alert("you are already registered with us")</script>');
redirect('views');
}
else
{
$data=array('email'=>$this->input->post('subscriber'));
$this->cartmodel->insert_data('subscriber',$data);
$this->session->set_flashdata('error', '<script type="text/javascript">alert("you have sucessfully subscribed with us")</script>');
redirect('views');
}
}