2012-05-25 194 views
0

當我創建的CodeIgniter控制器是這樣的:丟失登錄頁面重定向

function Home() { 
    parent::Controller(); 
    if(!$this->session->userdata('id')) 
     redirect ('login'); 
    $this->load->model('Home_Model'); 
} 

,但是當我嘗試訪問該頁面時,重定向頁面現在顯示。只顯示404找不到,但我在控制器上創建login.php,並在模型上查看home_model.php。

什麼與代碼和問題如何解決呢?

謝謝

+0

請您可以顯示登錄控制器的代碼。 – TechCare99

+0

也會告訴我們您使用的是哪個版本的CI。 – Kokers

回答

1

因爲該行的:parent::Controller(),我假設你正在使用笨1.既然你正在構建頁面,如homelogin,我假設你開始建立一個新的網站。如果我的假設是正確的,我建議你使用最新的CodeIgniter(目前v2.1.0,需要PHP 5.1.6或更新版本)。您可以在CodeIgniter主頁上獲取副本。

首先,我認爲你應該檢查你的錯誤報告級別。它應該類似error_reporting(E_ALL);用於調試。如果還沒有,請打開它並再次運行代碼。也許你會得到後:)

之後,你自己的答案,你應該嘗試下面的代碼爲你的構造函數來檢查你的家控制器進程如你預期。

function Home() 
{ 
    parent::Controller(); 
    echo 'Home Class Initialized'; 
} 
  1. 它至少應該顯示404頁。如果它沒有打印出任何東西,那麼我們需要更多的信息。也許你應該打開日誌記錄並分析你的日誌文件:尋找/application/config/config.php$config['log_threshold'] = 2;

  2. 如果由一個404的消息打印出「家庭類進行初始化」後續:請檢查您的控制器有這樣的:

    public function index() 
    { 
        echo 'Invoke default method'; 
    } 
    

    如果還沒有,請添加一個。你也可能想看看使用自己的默認方法here

    如果還是404,然後對不起,我不知道。也許你應該發佈更多的代碼。

  3. 如果打印出「家庭類進行初始化」只:好的。現在試試這個

    function Home() 
    { 
        parent::Controller(); 
        if (! $this->session->userdata('id')) 
        { 
         echo 'Redirecting to login page'; 
         //redirect ('login'); 
        } 
        $this->load->model('Home_Model'); 
    } 
    

    如果打印出來Redirecting to login page,現在是時候爲您取消註釋//redirect ('login');並檢查登錄頁面。按照步驟1 如果沒有相同的路徑,請檢查您的會話數據:var_dump($this->session->userdata('id')。你可以瞭解更多關於PHP滿口謊言here

  4. 畢竟,如果它仍然失敗,請考慮使用PHP 5

其他

function __construct() 
{ 
    parent::__construct(); 
    if (! $this->session->userdata('id')) 
    { 
     redirect ('login'); 
    } 
    $this->load->model('Home_Model'); 
} 
__construct():如果你使用這個 $this->load->model('Home_Model');,我想你將必須像這樣調用home_model $this->Home_Model->foo();或將有錯誤訪問NULL

+0

正確的方法是改變重定向('登錄')與重定向('index.php /登錄),但錯誤,當我嘗試在登錄頁面上提交表單。我的形式是這樣的

」process_form是controller/login.php上的函數 –