2014-06-24 34 views
0

誰創建了一個會話,cookie和它的任何角色如何? 我在一家公司的面試過程中被問及這個問題,但不知道答案。我想知道哪一方創建了Sessions,即客戶端或服務器端和Cookie是否有任何作用。誰創建了一個會話,cookie和它的任何角色如何?

此外,服務器如何理解向多個用戶登錄哪個客戶端和哪個客戶端的哪個用戶?

+0

RTFM:https://php.net/manual/en/intro.session.php – bidifx

回答

0

服務器創建會話並設置存儲在客戶端瀏覽器中的cookie。該cookie包含會話標識符(一串字符),允許用戶訪問服務器上的特定會話。該會話標識符對應於文件上的會話。

2

Cookie和會話在PHP中有什麼區別?

PHP會話改進了cookie,因爲它們允許web應用程序存儲和檢索比cookie更多的信息。 PHP會話實際上使用cookie,但它們增加了更多的功能和安全性。

服務器上

會話存儲數據,而不是像餅乾

會話和餅乾之間的主要區別,瀏覽器是數據存儲在服務器上的會話,而在訪問者的瀏覽器的cookie存儲數據。會話使用會話標識符來定位特定用戶的會話數據。此會話標識符通常存儲在用戶的網頁瀏覽器中的Cookie中,但需要更加安全的敏感數據(如用戶的ID,姓名等)始終保留在服務器上。

會話比cookie

那麼,到底爲什麼我們應該使用會話cookie時工作得很好,更安全?那麼,正如我們已經提到的那樣,會話更安全,因爲相關信息存儲在服務器上,而不是在客戶端和服務器之間來回發送。第二個原因是有些用戶要麼關掉cookies,要麼拒絕他們。在這種情況下,雖然設計用於使用cookie的會話實際上可以在沒有使用cookie的情況下工作,但您可以在此處閱讀:可以使用PHP會話而不使用cookie嗎?

會話需要額外的空間,不像餅乾

PHP會話,不像只是存儲在用戶的瀏覽器的cookies,需要在服務器上的一個臨時目錄PHP可以存儲會話數據。對於運行Unix的服務器來說,這根本不是問題,因爲/ tmp目錄是用於這樣的事情。但是,如果您的服務器運行Windows和早於4.3.6的PHP版本,則需要配置服務器 - 以下是要做的:在Windows服務器上創建一個新文件夾 - 您可以將其稱爲C :\ TEMP。您要確保每個用戶都可以讀取和寫入此文件夾。然後,您需要編輯php.ini文件,並將session.save_path的值設置爲指向您在Windows服務器上創建的文件夾(在這種情況下,該文件夾位於C:\ temp下)。最後,您需要重新啓動Web服務器,以使php.ini文件中的更改生效。

會話必須使用的session_start功能

一個非常重要的是要記住使用會話時是每個將使用一個會話頁面必須通過調用函數session_start()開始。函數session_start()告訴PHP啓動一個全新的會話或訪問一個現有的會話。

如何在session_start在PHP中使用cookies

首次使用session_start()功能,它會試圖發送一個cookie與PHPSESSID的名稱和看起來像a30f8670baa8e10a44c878df89a2044b的東西價值 - 這是包含32個十六進制字母的會話標識符。因爲cookie必須在任何數據發送到瀏覽器之前發送,這也意味着必須在將任何數據發送到Web瀏覽器之前調用session_start。

link-1

link-2

link-3

link-4