【问题标题】:create a email checker using php codeigniter使用 php codeigniter 创建电子邮件检查器
【发布时间】:2014-12-20 05:22:51
【问题描述】:

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

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

如果用户尝试输入上例中提到的电子邮件 id,则应验证它是否是有效的电子邮件 id,并检查具有该电子邮件 id 的用户是否已经存在?

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

【问题讨论】:

  • 您的意思是有效的语法,或属于某人的有效、有效的电子邮件?前者可以通过 CodeIgniter 的 Form Validator 类实现 - 查找它,它可以验证电子邮件。后者是不可能的。
  • 向我们展示您的努力,如果您不知道您的代码,我们将如何知道您正在尝试某些事情
  • 你有没有从我的回答中得到一些想法

标签: php forms codeigniter email-validation


【解决方案1】:

首先,我想为您提供一个检查电子邮件地址域是否存在的功能,然后我将尝试找出任一用户之前是否已注册的验证过程,并参考链接checkdnsrr().

我的答案分为三部分

  1. 验证域是否存在
  2. 客户端验证可以通过jquery或html5完成
  3. 要注册的唯一电子邮件地址

第 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 标签只会看到任一用户在继续下一步之前已填写完整的电子邮件字段。


第三部分


这是不注册那些已经注册的电子邮件的代码。

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

【讨论】:

    【解决方案2】:

    您还可以使用 dns 验证电子邮件域。

    public function check_domain($email)
    {
        if( ! (bool) checkdnsrr(preg_replace('/^[^@]++@/', '', $email), 'MX'))
        {
            return FALSE;
        }
    
        return TRUE;
    }
    

    【讨论】:

      【解决方案3】:

      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 规则。

      希望对你有帮助。

      【讨论】:

      • 哦,为了检查电子邮件是否确实存在于数据库中,您可以使用回调方法。见:ellislab.com/codeigniter/user-guide/libraries/…
      • 嗨,其实我想要的是有效的工作电子邮件!是否可以通过第三方api?请澄清一下,谢谢。
      • 如果您想要一个有效的工作电子邮件(现有的电子邮件),您将需要您的用户在将其存储到数据库之前确认他的电子邮件。我认为没有第三方解决方案可以解决这个问题,因为它需要第三方提供商跟踪每封现有的电子邮件(这是不可能的)。因此,也许可以发送一封确认电子邮件,其中包含指向您的控制器 (urdomain.com/contr/meth) 的链接,其方法是在确认时将电子邮件放入数据库/激活用户或您想要的。
      猜你喜欢
      • 2013-07-26
      • 2023-03-14
      • 2017-12-20
      • 2011-12-02
      • 2023-03-15
      • 2016-09-27
      • 2016-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多