簡體   English   中英

Codeigniter表單驗證未顯示錯誤

[英]Codeigniter form validation is not showing errors

我是Codegniter的新手,所以對我很輕松。 我正在構建一個簡單的登錄表單,並且在登錄憑據正確時我已成功重定向到頁面。 但是,如果我提交一個空表單,我不會收到任何錯誤消息。 我也在表單字段中使用set_value ,並且codeigniter在表單提交后不會重新填充用戶輸入的內容。 不知何故,數據正在被清除。 以下是我為清晰起見所做的一些事情。

  1. 自動加載form_validation庫
  2. 自動加載表單助手
  3. 回應上面的validation_errors表單

account.php(控制器)

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

  class Account extends CI_Controller {

    public function __construct()
    {
      parent::__construct();
      $this->load->model('User_model', 'user');
    }

    public function index() {
      $this->load->view('home');
    }

    public function validate() {

      $this->form_validation->set_rules('username', 'username', 'xss_clean|required');
      $this->form_validation->set_rules('password', 'password', 'xss_clean|required|md5');

      $user_data = array(
        'username' => $this->input->post('username'),
        'password' => MD5($this->input->post('password'))
      );

      if ($this->form_validation->run() == FALSE)
      {
        $data['title'] = "Login Fool";
        $this->load->view('templates/header', $data);
        $data['contents'] = $this->load->view('login_view', $data, TRUE);
        $this->load->view('page', $data);
        $this->load->view('templates/footer');
      }
      else
      {
        $validated = $this->user->validate($user_data['username'], $user_data['password']);
        if($validated){
          redirect(base_url() . 'account');
        }
        else{
          $this->session->set_flashdata('LoginError', 'Sorry, your credentials are incorrect.');
          redirect(base_url() . 'account/login');
        }

       }

    }

  public function login() {

    $data['title'] = "Login Fool";
    $this->load->view('templates/header', $data);
    $data['contents'] = $this->load->view('login_view', NULL, TRUE);
    $this->load->view('page', $data);
    $this->load->view('templates/footer');

  }

}

login_view.php(查看)

<h1>Login Now</h1>
<?php
  if(validation_errors() != false) {
    echo "<div id='errors'>" . validation_errors() . "</div>" ;
  }
?>
<?= ($this->session->flashdata('LoginError')) ? '<p class="LoginError">' . $this->session->flashdata('LoginError') . '</p>' : NULL ?>

<?php echo form_open('account/validate'); ?>
   <label for="username">Username:</label>
   <input type="text" size="20" id="username" name="username" value="<?php echo set_value('username'); ?>"/>
   <br/>
   <label for="password">Password:</label>
   <input type="password" size="20" id="passowrd" name="password" value="<?php echo set_value('password'); ?>"/>
   <br/>
   <input type="submit" value="Login"/>
 </form>

任何想法為什么錯誤不會顯示在表單上方?

原來我的模型是罪魁禍首。 它擴展了CI_Controller而不是CI_Model。 感謝所有看過這個的人。 這段代碼有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM