请帮我创建一个允许用户提交有效电子邮件的表单。
当有人尝试输入电子邮件ID时,应在提交给数据库之前对其进行验证。垃圾邮件ID的一些示例包括test@abc.com
,123@xyz.com
等。
如果用户尝试输入上述示例中提到的电子邮件ID,则应验证其是否为有效的电子邮件ID,并检查具有电子邮件ID的用户是否已存在?
请帮我在php codeigniter中构建代码。
答案 0 :(得分:1)
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规则。
希望它有所帮助。
答案 1 :(得分:1)
您还可以使用dns验证电子邮件域。
public function check_domain($email)
{
if( ! (bool) checkdnsrr(preg_replace('/^[^@]++@/', '', $email), 'MX'))
{
return FALSE;
}
return TRUE;
}
答案 2 :(得分:0)
首先,我想给你一个检查电子邮件地址域是否存在的功能,之后我将尝试找出用户之前已经注册过的验证过程,以及参考链接到checkdnsrr()
我已将答案分为三部分
第1部分
尝试使用多个不同域名的此功能。这段代码对我有用,我希望wi
function validate_email($email="zazikhan1@wowowowowowowowoowoowowowo.com"){
$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 rain并选择你喜欢的插件,但如果你喜欢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');
}
}