2013-04-22 20 views
0

我目前正在使用codeigniter創建的現有網站。 每當用戶輸入一個頁面,他都會被重定向到frontpage.php,檢查用戶是否已登錄,如果沒有,他會被重定向到登錄頁面。 現在,我有一個頁面,這個frontpage.php不應該被執行,並且任何用戶都可以輸入它。忽略codeigniter中的frontpage.php

任何幫助,非常感謝。

+0

什麼是確切的問題?更清楚,你有沒有嘗試過嗎? – Daanvn 2013-04-22 12:15:42

+0

我試圖修改沒有檢查frontpage.php shud被加載的新頁面,但任何代碼僅在去到frontpage.php後執行...有沒有什麼辦法檢查用戶試圖去的首頁? – Sander 2013-04-22 12:21:24

回答

0

重新路由一切到您的網頁控制器,並以此作爲你的默認

$route['default_controller'] = 'pages'; 

$route['(.*)'] = 'pages/index/$1'; 

-

class Pages extends CI_Controller 
{ 
    protected $currentUser = null; 

    public function __construct() 
    { 
     parent::__construct(); 
     $this->currentUser = Auth::getCurrentUserObject(); //check user is logged in 
    } 

    public function index($uri='home') 
    { 

     $sizeOfSegments = sizeof($this->uri->rsegments); 

     if ($sizeOfSegments >= 3) 
     {  
      $uri = $this->uri->rsegments[3]; 
     } 
     else 
     { 
      $uri = 'home'; 
     } 

     $pageFound = Page::find($uri); //query the database 

     if (!$pageFound) 
     { 
      return show_404($uri); // find out where there were headed 
     } 

     unset($sizeOfSegments, $uri); 

     if(is_null($this->currentUser) OR !$this->currentUserHasPermissionToViewThisPage OR !$pageIsNotPublic) 
     { 
      return redirect('login'); 
     } 

     $this->load->view(); 

    } 
} 
+0

謝謝,但我真的不明白髮生了什麼,Page :: find($ uri)是做什麼的? – Sander 2013-04-22 13:58:08

+0

Page ::在你的情況下查找不會做任何事情,除非你使用ORM,如php-activerecord或Doctrine等。我只是說明Page :: find將是你的數據庫查詢 – Philip 2013-04-22 15:11:23

0

做出新的控制器

class Newpage extends CI_Controller { 

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

現在轉到

yourhost.com/index.php/newpage

0

可能是你的默認控制器具有檢測用戶是否登錄的編碼或不。請刪除或更改控制器中的代碼。

+0

但我需要該代碼才能在該頁面上工作 – Sander 2013-04-22 12:34:43

0

我想你需要刪除控制器,它的工作原理就是這樣!

+0

......認真嗎? 0 – Sander 2013-04-22 12:41:54

+0

是的,我非常認真,在我的學校他們教我代碼點火器的工作原理!我有好點 – 2013-04-22 12:42:37

1

也有類似的問題,並通過使用一些在線教程解決它這樣

1:在'frontpage.php'之前創建一個單獨的登錄頁面(例如login.php)。

2:將登錄名,密碼和會話變量傳遞到首頁。

3:重新編碼您'frontpage.php'以檢查'login.php'傳遞的會話變量。

如果你通過正常的方式進入頁面,它將使用正常的登錄。 如果你通過新的'login.php'頁面進入頁面,它將被重新編碼的'frontpage.php'拾取並繞過正常的方式。

希望這有助於

Grtz