2010-10-27 64 views
1

我想在CodeIgniter中創建一個登錄腳本,但我只有一個空白頁面。CodeIgniter:我無法登錄

我希望它說「用戶名或密碼錯誤」,如果用戶名和密碼正確,它應該將會話設置爲true。我希望有一個人可以幫助我。

這裏是我的代碼:

<?php 

class Login extends Controller { 

    function index() 
    { 

     if ($this->_submit_validate() === FALSE) { 
      $this->index(); 
      return; 
     } 


    } 

    private function _submit_validate() 
    { 
     $this->form_validation->set_rules('username', 'Username', 
      'trim|required|'); 

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

     return $this->form_validation->run(); 
    } 


    function is_logged_in() 
    { 
     $is_logged_in = $this->session->userdata('is_logged_in'); 
     if(!isset($is_logged_in) || $is_logged_in != true) 
     { 
      echo 'Du har ikke adgang til denne side'; 
      die();  
      //$this->load->view('login_form'); 
     }  
    } 

} 

這裏是我的視圖文件:

 <h3>Medlem login</h3><br> 
     <?php 
     echo form_open('login/'); 
     echo validation_errors('<p class="error">'); 
     echo form_input('username', 'Username'); 
     echo form_password('password', 'Password'); 
     echo "<br />"; 
     echo form_submit('submit', 'login'); 
     echo anchor('signup', 'Opret Account'); 
     echo form_close(); 
     ?> 

回答

0

你的代碼是完全錯誤的,不遵循RESTful模式。對於初學者來說,你的指數函數會導致你的腳本阻止:

function index() 
{ 

    if ($this->_submit_validate() === FALSE) { 
     $this->index(); 
     return; 
    } 


} 

再次調用函數索引失敗相反的,你應該加載形式的視圖。然後在驗證成功的情況下添加else子句。像:

function index() 
{ 

    if ($this->_submit_validate() === FALSE) { 
     $this->load->view('view_form'); 
    } else { 
     $this->function_to_set_session(); 
    } 
} 

在function_to_set_session(),你會然後做下面幾行內容:

function login(){ 
    // set session vars 
    $this->session->set_flash('flash_message_to_show_after_reload'); // this is the message on succes 
    redirect('path_to_redirect'); 
} 

我想你是剛剛開始使用CodeIgniter?如果是這樣,我建議遵循教程。

+0

hm即時新和我有一些教程,但都做不同:S, – Simon 2010-10-27 13:38:20

+0

但我想要如果用戶名或密碼錯誤它會得到一個錯誤「錯誤的用戶名操作系統密碼」,所以沒有加載一個新的視圖文件 – Simon 2010-10-27 13:39:15

+0

但是要在屏幕上顯示任何內容,您需要加載視圖!因此,如果出現錯誤,請重新加載您的表單視圖並使用CodeIgniter的form_helper顯示錯誤。如果成功,請設置會話變量並將用戶重定向到正確的頁面。這是你的流程應該如何工作。 – thomaux 2010-10-28 06:20:00