2012-10-29 234 views
0

我試圖爲我的網站實現註銷過程。 當用戶單擊退出按鈕時,我將他重定向到以下home控制器腳本。Codeigniter GET參數不通過url傳遞

http : // mydomain/php/ci/index.php/index/?logout=set 

在我家控制器index功能,如果註銷我查=設置然後銷燬所有會話。

echo @$_GET['logout']; 
    exit(); 
    if(@$_GET['logout'] == "set") 
    { 
     unset($_SESSION['userid']); 
     @$_SESSION = array(); 
     @session_unset(); 
     @session_destroy(); 
    } 

但是,當我來到這裏沒有被打印,因爲註銷參數是不及格。 當我點擊退出按鈕時,看到以下網址。

http://localhost/php/ci/home/ 

這是怎麼發生的?

+0

爲什麼你在$ _GET之前設置了@ > @ $ _ GET ['logout']; – Svetoslav

+0

,因爲當用戶訪問頁面時,他沒有登錄它給了我一個錯誤,該變量沒有設置。因此第一次變量不會被設置。但是當用戶註銷變量將被設置。這就是爲什麼我用它來忽略這個'變量沒有設置錯誤' – Mj1992

+0

那麼你肯定不需要在最後3行開頭的'@'。請注意,CodeIgniter 2.x之前默認禁用'$ _GET'參數。 –

回答

3

你可以得到所有的get數據與CodeIgniter這樣的:

var_dump($this->input->get()); 

但是,不要使用index方法來註銷用戶,但要一個方法吧,像即此:

class Users extends CI_Controller() { 
    public function index() { 
     // Index stuff here   
    } 

    public function logout() { 
     // Your check if a user is logged in, instead of the dirty @ 
     if(isSet($_SESSION['userid'])) { 
      unset($_SESSION['userid']); 
     } 

     redirect(); 
    } 
} 

然後在您的視圖作出這樣的鏈接:

site_url("users/logout"); 

您會希望爲此使用CodeIgniter會話處理程序,但這只是解決問題的快速解決方案。我可以建議你閱讀CodeIgniter手冊。因爲你註銷的「解決方案」很髒,不適合MVC原理