2010-06-21 147 views
0

什麼是會話和cookie在php和它存儲的位置什麼是會話和cookie在php和它存儲的位置

我使用Google搜索。但我找不到確切的答案。

麻煩澄清預先

感謝

+0

沒有確切的答案。這取決於你的服務器是如何配置的。 – animuson 2010-06-21 06:57:22

+0

*(參考)* [PHP會議手冊](http://de3.php.net/manual/en/book.session.php) – Gordon 2010-06-21 06:59:51

回答

2

Cookie存儲在瀏覽器中,而不是PHP中。您可以通過查看$ _COOKIE ['cookiename']來獲取瀏覽器發送的cookie,但據我所知,您不能設置這樣的cookie - 您需要使用setCookie()或可能的標題('Set-曲奇餅: ...')。

會話可以存儲在任何地方,但它們通常只是服務器文件系統上的文件;你的php.ini(或ini_get()函數)可能會有助於找出在哪裏。嘗試:

$session_file_name = ini_get('session.save_path')."/sess_".session_id(); 
0

的Cookie是一小片存儲在客戶端(瀏覽器)和會話數據的存儲在服務器側的文本文件,其名稱被存儲在cookie中。

就是這樣。

+0

存儲在服務器端 - 這是什麼意思。你的意思是它存儲在db – Fero 2010-06-21 07:09:35

+0

@Fero「是一個文本文件」意味着存儲爲一個文件。你碰巧知道一個文件是什麼? – 2010-06-21 07:23:43

+0

謝謝彈片。得到了你的觀點 – Fero 2010-06-21 07:28:12

2

一個cookie是某些數據塊的服務器請求客戶端存儲和隨之而來的請求發送。

A session是一些數據存儲在服務器上,並通過會話ID連接到用戶。此會話ID大部分時間都存儲在cookie中。

會話可以存儲在文件系統中,很可能存儲在臨時目錄中,但也可以存儲在數據庫中。

Cookie和會話都有到期日期連接到他們,所以他們不會永遠持續下去。

+0

當你說「這個會話ID大部分時間存儲在一個cookie中。」如果它不存儲在瀏覽器cookie中,它存儲在哪裏? – Rao 2013-10-02 15:51:10

+0

例如會話ID可以通過URL傳遞,但很少使用。 – Ikke 2013-10-02 16:14:21

+0

因此,如果瀏覽器不允許保存cookie,那麼它通過Url傳遞? – Rao 2013-10-02 22:00:50

2

HTTPstateless。這意味着無論您何時從網絡服務器請求某些內容,它都會爲請求的頁面提供服務,並立即將您遺忘。

想象一下購物車:

您在購物車中添加了物品。服務器將有一些數據存儲器,以記住您將物品X放入購物車中,但由於HTTP是無狀態的,因此下次打電話給服務器時,它不會記得您是否將某物放入購物車。網絡服務器可以在返回的頁面上創建一個表單,並將其添加到每個項目中。現在你添加另一個項目,但也發送,你已經添加了哪個項目。重複。這可以有效地在每個請求上傳輸交互的整個狀態。但這是相當低效和不安全的。

隨着Sessions enabled,網絡服務器將爲您創建一個唯一的ID,即所謂的Session ID。這將用於在後續請求中鏈接您和購物車。通常,會話ID以Cookie的形式發送到瀏覽器。從技術上講,這種情況通過HTTP頭:

Set-Cookie: PHP_SESS=abcdefg123456 

瀏覽器讀取頭,並創建或在瀏覽器內該cookie存儲更新cookie文件。通常,Cookie文件只不過是計算機上文本文件中的鍵/值存儲。如果你想看看他們谷歌爲「哪裏[browsername]存儲我的餅乾」。

在對同一個網絡服務器的下一次請求中,您的瀏覽器將一起發送cookie,網絡服務器現在可以將此ID與服務器上的某個數據存儲(無論設置爲session save handler)關聯起來,例如登錄信息,購物車的內容等

請參閱PHP手冊的參考我已在您的問題的下面鏈接瞭解更多詳細信息。