回覆列表
  • 1 # 網路圈

    首先可以明確的告訴你,在PHP專案中即使禁用了Cookie,Session依舊是可以正常使用的,但需要做一些額外的處理。

    Cookie和Session之間是有聯絡的,它們都是用來標識使用者會話狀態和儲存一些資料的,我們先來大致瞭解一下這兩者的區別。

    1、儲存位置不同

    Cookie是儲存於客戶端瀏覽器的,主要存放使用者非敏感的資訊;

    Session是儲存於伺服器端的(記憶體中或硬碟中),可以存放使用者較為敏感的資訊;

    2、資料儲存量不同

    Cookie適合儲存小量資料,Session可存放大量資料。

    3、安全性上

    Cookie儲存在客戶端,所以安全性得不到保障,使用者可以偽造Cookie;Session較Cookie要安全。

    上面說到了Cookie和Session的區別,那它們的聯絡是怎樣的呢?

    其實,Session預設是基於Cookie的,Session中有個SessionID是儲存在客戶端Cookie中的。當用戶瀏覽器發出請求時,本地的Cookie會附在請求頭資訊中,伺服器端可以獲取到客戶端儲存的SessionID值,然後就能定位到伺服器端對應的Session。

    所以說,如果直接禁用了客戶端Cookie,Session就無法正常使用,但此時我們可以手動將SessionID值傳遞給伺服器端,伺服器端用這個SessionID值就能正常操作Session了。PHP端設定SessionID使用內建函式即可,如:session_id($_GET["ssid"]);session_start();

  • 2 # 網際網路活化石

    答案:禁用Cookie, PHP session依然能使用

    通常來說,Session預設是基於Cookie的。

    在預設的PHP配置中,SessionID是需要儲存在Cookie中的,預設Cookie名為PHPSESSIONID,伺服器端依靠SessionID這個cookie來定位Session。

    但是,Session還可以透過URL或FORM傳遞。

    如果客戶端禁用了Cookie,那可以將session_id附帶在每個網址後面(包括POST)

    GET http://www.xx.com/index.php?session_id=xxxxxPOST http://www.xx.com/post.php?session_id=xxxxx

    然後在每個頁面的開頭使用session_id($_GET["session_id"]),來強制指定當前session_id。

    除了使用URL來傳遞sessionID,還能用LocalStorage+AJAX來傳遞sessionID。

    問題的關鍵就在於:只要能儲存和傳遞sessionID,就能使用SESSION,cookies只是使用SESSION的方式之一

  • 中秋節和大豐收的關聯?
  • 李未央是哪個年代的皇帝是誰?