【问题标题】:Codeigniter form_validation always return falseCodeigniter form_validation 总是返回 false
【发布时间】:2013-11-14 14:31:00
【问题描述】:

我尝试验证我的表单,但它总是返回 FALSE。表单填充 POST 变量,设置了验证配置,但它不起作用。我尝试了一切,现在我卡住了。也许你的眼睛会发现错误。

这是我的控制器:

    public function new_pass()
{
    $code = mysql_real_escape_string($this->uri->segment(3));
    $this->load->model('forgot_password_model');

    if($this->forgot_password_model->check_code($code))
    {
        if($this->input->post('submit'))
        {
            $this->new_pass_validation();
        }
        else
        {
            $this->new_pass_form();
        }
    }
    else
    {
        redirect('welcome');
    }
}

private function new_pass_validation()
{
    $this->load->library('form_validation');

    var_dump($this->form_validation->run('forgot_password/new_pass'));
    var_dump($this->input->post());
    if ($this->form_validation->run() === FALSE)
    {
//          print_r('dump' . validation_errors());
        $this->new_pass_form();
    }
    else
    {

    }
}

config/form_validation:

$config = array(
     'forgot_password/new_pass' => array(
          array(
                array(
                    'field' => 'password',
                    'label' => lang('default_jelszo'),
                    'rules' => 'trim|required|min_length[5]|max_length[32]'
              ),
              array(
                    'field' => 'repassword',
                    'label' => lang('default_jelszo_megerosites'),
                    'rules' => 'trim|required|matches[password]|callback_password_hash'
              ),
          )
     ),
);

还有观点:

<section id="content">
    <a id="logo" href=""></a>
    <?=validation_errors(); ?>
    <div class="formwrapp">
        <form action="<?=site_url() . $this->uri->uri_string(); ?>" method="post">
            <h3>Forgot password</h3>
            <ul>
                <li>Pass</li>
                     <li><input type="password" value="" name="password" /></li>

                <li>Repass</li>
                     <li><input type="password" value="" name="repassword" /></li>

                <li>&nbsp;</li><li><input id="login" type="submit" value="Submit" name="submit" /></li>
            </ul>
        </form>
    </div>
</section>

【问题讨论】:

  • 返回什么&lt;?php echo validation_errors(); ?&gt;
  • 它是空的。我不知道为什么。
  • var_dump($this-&gt;input-&gt;post()); 返回你所期望的一切?
  • 是:array(3) { ["password"]=> string(5) "asdfg" ["repassword"]=> string(5) "asdfg" ["submit"]=>字符串(5)“Mehet”}
  • 您的控制器是否命名为 forgot_password?我也看不到您在 form_validation 配置中使用的 password_hash 方法。

标签: php codeigniter validation


【解决方案1】:

你的配置文件中有一个不必要的数组,试试:

$config = array(
    'forgot_password/new_pass' => array(
        array(
            'field' => 'password',
            'label' => lang('default_jelszo'),
            'rules' => 'trim|required|min_length[5]|max_length[32]'
         ),
         array(
             'field' => 'repassword',
             'label' => lang('default_jelszo_megerosites'),
             'rules' => 'trim|required|matches[password]|callback_password_hash'
         )
     )
);

【讨论】:

    【解决方案2】:

    我认为完成这项工作的最佳方法是点击此链接...即不使用配置类型,但如果您想使用配置,我想您忘记编写代码...

    $this->form_validation->set_rules($config); 
    

    http://ellislab.com/codeigniter%20/user-guide/libraries/form_validation.html

    【讨论】:

    • 配置自动加载到form_validation 库中。为了保持代码干净,你必须使用配置。
    • 我想你误解了我的意思。我只想告诉您可以使用任何选项,但如果您想使用配置,请添加以下代码... $this->form_validation->set_rules($config);
    • 如果您将配置文件命名为 form_validation.php 并放置一组规则,它将自动加载,您无需添加任何内容。从其他配置加载表单验证规则是一种不好的做法。见ellislab.com/codeigniter/user-guide/libraries/…部分的红色注释
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多