2015-10-25 53 views
0

我有登錄表單,它將用戶名和密碼作爲用戶輸入,當我實現CodeIgniter表單驗證程序時,它沒有通過驗證。我已經包含了我的表單和驗證控制器。表單驗證在codeigniter中不起作用

login.php查看文件片段。

<div class="tab-content"> 

        <div class="tab-pane fade in active" id="user"> 
       <?php echo validation_errors(); ?> 
       <?php echo form_open('verifylogin'); ?> 

        <br> 
         <fieldset> 
          <div class="form-group"> 
           <div class="right-inner-addon"> 
            <i class="glyphicon glyphicon-user"></i> <input 
             class="form-control input-lg" type="text" 
             placeholder="Username" id="username"> 
           </div> 
          </div> 
          <div class="form-group"> 
           <div class="right-inner-addon"> 
            <i class="glyphicon glyphicon-lock"></i> <input 
             class="form-control input-lg" type="password" 
             placeholder="Password" id="passowrd"> 
           </div> 
          </div> 
         </fieldset> 
         <br> 
         <div class=" text-center"> 
          <input type="submit" class="btn btn-primary" value="SUBMIT" /> 

         </div> 
       <?php echo form_close(); ?> 
      </div> 

,這是validatelogin.php

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

class VerifyLogin extends CI_Controller { 

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

function index() 
{ 
    //This method will have the credentials validation 
    $this->load->library('form_validation'); 

    $this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean'); 
    $this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database'); 

    if($this->form_validation->run() == FALSE) 
    { 
    //Field validation failed. User redirected to login page 
    $this->load->view('login'); 
    } 
    else 
    { 
    //Go to private area 
    redirect('home', 'refresh'); 
    } 

} 

function check_database($password) 
{ 
    //Field validation succeeded. Validate against database 
    $username = $this->input->post('username'); 

    //query the database 
    $result = $this->user->login($username, $password); 

    if($result) 
    { 
    $sess_array = array(); 
    foreach($result as $row) 
    { 
     $sess_array = array(
     'id' => $row->id, 
     'username' => $row->username 
     ); 
     $this->session->set_userdata('logged_in', $sess_array); 
    } 
    return TRUE; 
    } 
    else 
    { 
    $this->form_validation->set_message('check_database', 'Invalid username or password'); 
    return false; 
    } 
} 
} 
?> 

我已引用的形式驗證文檔,但無法找到我的代碼任何問題。

+0

閱讀本http://w3code.in/2015/09/create-login-and-registration-with-codeigniter/ – Ricky

回答

1

您的輸入字段在這兩個字段中都缺少name。在字段中添加name="username"name="password"

<fieldset> 
    <div class="form-group"> 
     <div class="right-inner-addon"> 
      <i class="glyphicon glyphicon-user"></i> 
      <input class="form-control input-lg" type="text" placeholder="Username" id="username" name="username"> 
     </div> 
    </div> 
    <div class="form-group"> 
     <div class="right-inner-addon"> 
      <i class="glyphicon glyphicon-lock"></i> 
      <input class="form-control input-lg" type="password" placeholder="Password" id="passowrd" name="passowrd"> 
     </div> 
    </div> 
</fieldset> 
0

你忘了名字的用戶名和密碼輸入:

<input class="form-control input-lg" type="text" placeholder="Username" id="username" name="username"> 

<input class="form-control input-lg" type="password" placeholder="Password" id="passowrd" name="password">