0

我是网络编程的初学者,所以请多多包涵。

我试图创建一个登录系统来进行这些验证:

  1. 电子邮件是必需的,并且必须是有效的
  2. 密码是必需的
  3. 如果登录失败,我将为用户创建一个跨度

我可以使用 codeigniter 的表单验证轻松完成第一个和第二个。但是,第 3 次并不容易,因为我需要先从数据库中检查它。

所以我尝试创建这样的代码:

function login() {
        $data['validation'] = TRUE;

        $this->form_validation->set_rules('txt_email', 'Email', 'required|valid_email');
        $this->form_validation->set_rules('txt_password', 'Password', 'required');

        if($this->form_validation->run() !== FALSE)
        {
            $log_in = $this->umat_m->log_in($this->input->post('txt_email'), $this->input->post('txt_password'));
            if($log_in !== FALSE)
            {
                $data['validation'] = TRUE;
                $_SESSION['username'] = $this->input->post('txt_email');
                redirect('backend/umat/index');
            }

            else
                $data['validation'] = FALSE;
        }

        $this->load->view('backend/login_v', $data);
    }

和 HTML:

<?php echo form_submit('btn_submit', 'Log In', 'class = "btn btn-primary"'); ?> <br/>
                        <?php
                            if($validation === FALSE)
                                echo '<span class="label label-important">Wrong Username/Password</span>';
                            else
                                echo '<span class="label label-important"><?php echo validation_errors(); ?></span>';
                        ?>

我试图做的是,如果用户已经填写了电子邮件和密码字段但值错误,那么我将回显第一个跨度。

但是,此代码仍然无法正常工作。当用户填写错误的值(但不是空的)时,会回显错误的用户名/密码范围,但是当文本字段为空时,codeigniter 的表单验证不会显示任何消息(这意味着永远不会显示第二个回显)。

任何帮助表示赞赏,如果您需要更多帮助,请询问我。

4

2 回答 2

2

要检查视图中的每个字段验证错误,请在要验证它的每个输入之后写这样的内容。

 <input type='text' name='id_no' id='id_no' />
 <?=form_error('id_no')?>
于 2013-08-14T09:55:32.000 回答
1

最好在 Controller 中处理:

控制器:

function login()
{
    // Set the default value
    $data['error'] = '';

    $this->form_validation->set_rules('txt_email', 'Email', 'required|valid_email');
    $this->form_validation->set_rules('txt_password', 'Password', 'required');

    if($this->form_validation->run() !== FALSE)
    {
        $log_in = $this->umat_m->log_in(
            $this->input->post('txt_email'),
            $this->input->post('txt_password')
        );

        if($log_in !== FALSE)
        {
            $_SESSION['username'] = $this->input->post('txt_email');
            redirect('backend/umat/index');
        } else {
            // Set your error message
            $data['error'] = 'Wrong Username/Password';
        }
    } else {
        // Set the validation errors
        $data['error'] = validation_errors();
    }

    $this->load->view('backend/login_v', $data);
}

看法:

<?php if ($error): ?>
    <span class="label label-important"><?php echo $error; ?></span>
<?php endif ?>
于 2013-08-14T11:22:07.847 回答