2013-05-28 53 views
1

我知道默認的PHP會話存儲機制是一個文件,通常在tmp中。 session_id是在cookie中攜帶的。將PHP會話數據存儲在cookie中

我也想將我的少量會話數據存儲在cookie中。 (就像Rails會默認。)

問:是否有一個PHP庫來處理這對我或者我需要使用session_set_save_handler等推出自己的?

加:是只是CodeIgniter session class可用嗎?

+1

做與PHP會話cookie不會亂。如果您想要將數據存儲在cookie中,請使用另一個cookie。 –

回答

2

你需要問自己的是爲什麼你這樣做。如果您提供會話ID,則可以訪問會話中的任何信息。如果您希望以其他方式進行,您將不得不推出自己的會話系統。

下面是對你心裏有什麼幾點:

  • 餅乾有一個最大尺寸(4KB)。 CI cookies實際上很常見。
  • 在文件服務器端的信息有保證防篡改(或防篡改作爲您的服務器)。 Cookie中的信息不是
  • 如果是「嚇唬你」的「OMG DISK READ」,那麼你總是可以將redis綁定爲會話管理器。這實際上是微不足道的。
  • 最後,你將有一個顯著PITA你的代碼被移植別處

假設你還是想這樣做的那一刻(你真的確定嗎?),答案就是另設的cookie。 PHP會話處理程序最好不要亂用,因爲如果更改出錯,那麼會在整個地方投擲500個字符。第二個曲奇是你最好的選擇。

+0

感謝您的回答......但如果這是一個糟糕的主意,爲什麼它現在是Rails的默認設置?如果需要,加密可以處理安全問題。 ps我很好用第二個cookie,我沒有想到這一點。 –

-1

試試這個

$newdata = array(
        'username' => 'johndoe', 
        'email'  => '[email protected]', 
        'logged_in' => TRUE 
       ); 

$this->session->set_userdata($newdata); 



$this->input->set_cookie($newdata); 
+0

OP的不要求如何使用CodeIgniter –

+0

@DamienPirsy:那時候你的評價爲和/或報告不是答案。 +這個特定標本的質量較差。 –

+0

@SébastienRenauld我傾向於在投下downvote(我沒有,在這裏)之前發表評論。順便說一句,這是一個答案,並不是低質量的(好吧,也許是邊界線) - 根據我讀的準則,這些標誌可能會被拒絕。我更喜歡警告海報,他可能誤解了這個問題 - 這裏可能就是這種情況 –