使用php codeigniter创建一个电子邮件检查器

时间:2014-10-24 11:10:52

标签: php forms codeigniter email-validation

请帮我创建一个允许用户提交有效电子邮件的表单。

当有人尝试输入电子邮件ID时,应在提交给数据库之前对其进行验证。垃圾邮件ID的一些示例包括test@abc.com123@xyz.com等。

如果用户尝试输入上述示例中提到的电子邮件ID,则应验证其是否为有效的电子邮件ID,并检查具有电子邮件ID的用户是否已存在?

请帮我在php codeigniter中构建代码。

3 个答案:

答案 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. 验证域是否存在
  2. 客户端验证可以通过jquery或html5
  3. 完成
  4. 要注册的唯一电子邮件地址

  5.   

    第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');
           }
       }