2012-12-13 173 views
-5

有什麼區別?我知道會話變量存儲信息並讓您跨頁面使用它,但我有幾個問題:存儲的值在哪裏?會話變量和普通變量有什麼區別?會話變量與普通變量?

這是在PHP的上下文中。我經過了深入的回答,因爲我沒有找到關於這個在線的很多信息。

+3

你檢查了php.net或谷歌?它是有據可查的。我不太願意給你寫一份報告,重申已經存在的內容。 – NappingRabbit

+1

嗨NappingRabbit,是的,我沒有問過這個問題之前檢查過谷歌和php.net一會兒。我沒有找到我正在尋找的東西。對不起,你不必回答我的問題。 –

+0

對於「存儲值的位置」:普通變量,它存儲在(服務器)的存儲器中;會話變量,它存儲在一個臨時文件中,或者如果配置爲一個數據庫。會話配置參數的完整列表可以在這裏找到:http://php.net/manual/en/session.configuration.php – jacob

回答

2

在哪裏存儲的值?

這取決於PHP配置。默認情況下,會話變量被序列化並寫入服務器文件系統中的文件。在啓動會話的每個頁面視圖上,它們是非序列化的,可從$_SESSION陣列訪問。可以重寫默認會話處理程序,以便可以將變量存儲在其他位置,例如數據庫。

會話通過在客戶端計算機上存儲會話ID(它是唯一標識符)作爲cookie工作。客戶端每次請求頁面時,會話ID cookie都會隨請求一起發送,PHP會從cookie中獲取會話ID,然後提取與所述會話ID相關的會話ID數據。

會話變量和正常變量之間的區別是什麼?

簡而言之,一個會話變量被保存到一個源(如文件系統),這就是它們如何在頁面請求之間持續存在。一個普通的變量只會在腳本執行完成之前一直存在,然後它就會被銷燬。

0

默認情況下,會話變量存儲在服務器上的文件中。處理指向用戶的會話通常是在瀏覽器中設置的cookie(或者查詢字符串中可能是醜陋的參數,但這不可取)。

關於會話如何在the documentation中工作有很多信息。

0

PHP將會話變量(具有唯一標識符)存儲在本質上爲服務器站點的cookie中。然後它會在用戶的瀏覽器中存儲一個cookie,以跟蹤會話ID,以便稍後查找。

餅乾基本上是包含每個變量的編碼數據的文本文件。

正常變量只存儲在臨時內存中,並在完成時進行垃圾回收。

編輯:另外,看到這個答案的另一個定義:PHP: Storing 'objects' inside the $_SESSION

+0

感謝您的答案伊恩。會話是一個cookie嗎?或者他們是不同的東西? 會話是cookie的一種形式嗎? –

+0

@BobUni:會話不是Cookie,但Cookie可用於存儲會話標識符。 –