2017-02-21 99 views

回答

1

作爲另一個用戶鏈接到,是的,他們可以,有php的配置選項,不使用cookie而是依靠傳遞會話ID作爲url的一部分。您可以手動執行此操作,也可以讓PHP執行此操作。如果PHP設置爲自動添加ID,那麼它使用輸出緩衝來替換它在輸出中檢測到的任何url,默認情況下它會在某些標記(a,表單等)上執行此操作。

在此處查看選項:http://php.net/manual/en/session.configuration.php

session.use_cookies布爾 session.use_cookies指定 模塊是否會使用cookie來存放會話ID的客戶端。 默認爲1(啓用)。

session.use_trans_sid布爾值 session.use_trans_sid是否 透明sid支持是否啓用。默認爲0(禁用)。

session.trans_sid_tags串 session.trans_sid_tags指定被改寫 HTML標籤,包括會話ID當啓用透明SID 支持。默認爲 a = href,area = href,frame = src,input = src,form = form是特殊標籤。被添加爲表單變量。

還聽取了警告:

注:基於URL的會話管理有更多的安全風險 比基於cookie的會話管理。例如,用戶可以通過電子郵件向其朋友發送包含活動會話ID的URL,或者 將包含會話ID的URL保存到他們的書籤,並且始終以相同會話ID訪問 。由於PHP 7.1.0,完整的URL路徑,例如https://php.net/,由trans sid功能處理。以前的PHP只處理相對URL路徑。重寫目標 主機由session.trans_sid_hosts定義。

cookie和session

一般會議做使用cookies。你問過會話和cookie之間的區別;雖然這裏沒有真正的可比的是他們兩個的一些信息:

餅乾

Cookies是瀏覽器存儲內的本地存儲簡單的鍵/值對的方法,則可以在瀏覽器重啓之間持續存在,但用戶可以擦他們。 Cookie不能總量超過4KB以上(見What is the maximum size of a web browser's cookie's key?

從文檔:http://php.net/manual/en/function.setcookie.php

$value = 'something from somewhere'; 

setcookie("TestCookie", $value); 
setcookie("TestCookie", $value, time()+3600); /* expire in 1 hour */ 
setcookie("TestCookie", $value, time()+3600, "/~rasmus/", "example.com", 1); 

// Print an individual cookie 
echo $_COOKIE["TestCookie"]; 

會議

當你調用session_start() PHP檢查餅乾,看它是否已經設置了「會話ID',如果沒有設置一個。然後它使用它來識別用戶/會話,並允許您臨時保存歸屬於該ID的服務器上的數據。每次你調用session_start時,它都會填充$ _SESSION,並且在每個腳本的結尾都會保存這個。這確實意味着如果頁面都使用會話,則頁面無法同時加載。會議的一些很好的例子可以看這裏:https://www.w3schools.com/php/php_sessions.asp

會話沒有限制本身,而是由其他因素的限制(見Maximum size of a PHP session

摘要

  • 會議一般使用Cookie
  • Cookie數據存儲在本地,會話數據存儲在服務器上
  • Cookie數據大小限制相對較小(4K),Session Da ta只受其他事物的限制。
  • Cookie數據僅僅是簡單的鍵/值對,會話數據,也可以數組,對象
相關問題