2012-11-19 20 views
0

我已經在codeigniter中創建了基於cookie的基本登錄設置。 這樣Cookie在php codeigniter中沒有正確設置?

class Display extends CI_Controller { 
public function Display() { 
    parent::__construct(); 
} 
public function index() { 
    //var_dump($_COOKIE); 
    if (isset($_COOKIE["user"])){ 
     redirect('home') 
    }else{ 
     redirect('display/login'); 
    } 

} 
public function login() { 
    //var_dump($_COOKIE); 
    if (isset($_COOKIE["user"])){ 
     $this->load->view('home'); 
    }else{ 
     $username = $this->input->post('username'); 
        //some validation 
     setcookie("user",$username,time()+60*60*24*30); 
     redirect('home'); 
    } 
} 

}

在家居控制器我檢查餅乾訪問頁面

class Home extends CI_Controller { 
public function Home() { 
    parent::__construct(); 
    //var_dump(get_cookie("user"));exit; 
    if (isset($_COOKIE["user"]) == false){ 
    redirect('display/login'); 
    } 
} 

}

我面對這裏的問題是我不能讓在類的構造函數中的cookie。在訪問課程中的任何功能之前,我需要在課堂中檢查cookie。什麼纔是正確的做法呢?提前致謝。

+0

出於好奇,你試圖獲取餅乾在相同的請求,你設置呢? – diggersworld

+0

@diggersworld基本上亞我使用get_cookie()。並檢查這些 –

回答

1

你不分配的cookie path參數,因此它的頁面的路徑它的IT和結果分配給是/login或類似的東西,它不會被髮送到您的網頁的其他部分,如/home,或只是根。更改setcookie()喜歡somethig這樣的:

setcookie("user",$username,time()+60*60*24*30, '/'); // notice the added path at the end 

而且任何人都可以在自己的客戶端設置cookie,傳遞僅他們的存在作爲身份驗證並不安全,任何人都可以改變自己的user的cookie會怎樣。

+0

在這一點上,我沒有理會這個項目它的漂亮basic.And感謝的安全性 –