2015-01-01 95 views
0

我是codeigniter的新手。我正在創建一個登錄表單和過程。但是,當它發現所有與數據庫匹配的數據時,它必須重定向到一個頁面(v_home)。但它顯示此錯誤。CodeIgniter重定向方法不起作用

在此服務器上找不到請求的URL/CodeIgniter/c_home。

我的代碼是

**我的表格**

<?php echo validation_errors(); ?> 
<?php echo form_open('c_verifylogin/index'); 
    echo form_label("Username: "); 
    echo form_input("username"); 
    echo "<br>"; 
    echo form_label("Password: "); 
    echo form_password("password"); 
    echo "<br>"; 
    echo form_submit("","Login"); 
    echo form_close(); 

?>

的varify類

class C_verifyLogin extends CI_Controller { 
function __construct() { 
    parent::__construct(); 
    //load session and connect to database 
    $this->load->model('m_login','login',TRUE); 
    $this->load->helper(array('form', 'url','html')); 
    $this->load->library(array('form_validation','session')); 
} 

function index() { 
    $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) { 
     $this->load->view('v_login'); 
     } else { 
      //Go to private area 
      redirect(base_url('c_home'), 'refresh'); 
      $this->load->view('v_home'); 
     }  
} 

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

    //query the database 
    $result = $this->login->login($username, $password); 
    if($result) { 
     $sess_array = array(); 
     foreach($result as $row) { 
      //create the session 
      $sess_array = array('username' => $row->username); 
      //set session with value from database 
      $this->session->set_userdata('logged_in', $sess_array); 
      } 
     return TRUE; 
     } else { 
      //if form validate false 
      $this->form_validation->set_message('check_database', 'Invalid username or password'); 
      return FALSE; 
     } 
    } 

}

` <?php 
    function index() { 
    $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) { 
     $this->load->view('v_login'); 
     } else { 
      //Go to private area 
      **redirect(base_url('c_home'), 'refresh');** 

     }  
} 

這裏V_home是查看主頁和c_home爲it.Help控制器將appriciated

+0

什麼是要重定向到c_hone控制器功能的名稱? – goseo

+0

索引功能。 –

回答

1

直接傳遞類的名稱和功能,重定向功能:

redirect('c_home/index', 'refresh'); 
1

您錯誤地使用了重定向方法。重定向方法將控制器及其功能作爲參數。

假設您有一個單獨的控制器來加載c_home視圖,如下所示。

class C_Home extends CI_Controller { 

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

} 

然後從任何其他控制器,你可以調用重定向方法,如下所示加載c_home視圖。

redirect('c_home','refresh'); 

你只需要給控制器,因爲加載視圖功能被命名爲index的名稱。否則,如果函數具有不同的名稱,它會喜歡這個。

redirect('c_home/someName','refresh'); 

所以基本上重定向方法需要控制器/方法

1

有兩種可能的方式來完成這項工作。 無論是使用下面的代碼

redirect(base_url('index.php/c_home','refresh'); 

否則轉到config目錄和開放routes.php文件 有與當前更改默認的控制器,並使用下面的代碼

redirect(base_url(),'refresh') 

記住,無論你加載進入codeigniter的url必須通過一個控制器,因此第二種方法使c_home成爲默認控制器。

1

試試這個

redirect(site_url('c_home'), 'refresh');