【问题标题】:Codeigniter form validation (mysql check)Codeigniter 表单验证(mysql 检查)
【发布时间】:2011-05-30 21:43:34
【问题描述】:

我正在学习 CI,我有一个简短的问题要问你们。我目前正在使用 form_validation 函数来帮助我进行一些快速验证。这工作正常,但是!如果我想验证已在使用的用户名或电子邮件,我该怎么做?

我猜我需要一个模型和一个方法来检查用户名或电子邮件是否已被使用。但是如何将给出的 false/true 结果与 form_validation 错误消息结合起来呢?

【问题讨论】:

    标签: php mysql codeigniter frameworks


    【解决方案1】:

    在 codeigniter 中,验证系统支持回调,这允许您扩展验证类以满足您的需要,例如:

    在您的控制器中,将“用户名”规则更改为:

    $this->form_validation->set_rules('username', 'Username', 'callback_username_check');
    

    然后在您的控制器中添加一个名为“username_check”的函数:

    function username_check($str)
    {
        $this->load->model('your_model');
    
        if ($this->your_model->checkUsername($str))
        {
            return true;
        }
        else
        {
            $this->form_validation->set_message('username_check', 'The username %s already exist');            
            return false;
        }
    

    在你的模型中:

    function checkUsername($username)
    {
        $this->db->where('username', $username);
        $query = $this->db->get('users');
        if ($query->num_rows() > 0){
            return true;
        }
        else{
            return false;
        }
    }
    

    再见!

    【讨论】:

    • 我这样做了,但是当我这样做时,我只是得到一个空白页,但如果我删除返回 false,提交时一切正常(但我没有收到任何错误)。
    • 已修复,抱歉。我在索引函数中有我的函数,看起来是时候睡觉了!还是谢谢 m8!
    【解决方案2】:

    您需要使用自定义回调,这些是您自己编写的验证函数。 您可以在codeigniter documentation了解更多信息

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-05
      • 2017-02-06
      • 2016-09-05
      • 2021-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多