2012-03-13 106 views
1

在瀏覽器中禁用Cookie後,我們網絡服務器上的會話不是 持續。這意味着,如果我前進到下一頁,我會收到一個新的 會話ID。在我重新加載的每一頁上,我都會成爲一個新的會話ID。 隨着啓用cookie翻轉罰款。 Webserver的PHP會話不會持久化沒有Cookie

Specifcations:

  • PHP版本5.3.3
  • Apache的版本2.2.13
  • 與Web服務器的SUSE Linux

本地對我的XAMPP安裝一切正常。

更新:

我已經按照每個頁面上的設置:

  • 的ini_set( 'session.use_cookies', '0');
  • ini_set('session.use_trans_sid','1');
  • session_start();

會話ID存在於URI中,但是當我檢查頁面上的會話ID時,它們是一個新ID,每次重新加載它們都是另一個ID。

+0

正如其他人所說。 HTTP是無狀態的,因此您需要一種機制將此上下文(通常稱爲SID)從一個請求傳遞到會話中的下一個請求。標準方法是接受* cookie *和請求參數sid。另外,如果當前請求沒有設置cookie,則將sid = XXX作爲參數添加到需要會話上下文的所有站點鏈接。 *但是,這有一個缺點,即不知道的用戶可以通過他們的會後鏈接 - 在論壇上多次看到這一點。 – TerryE 2012-03-13 15:25:59

回答

5

是的,當然。由於HTTP是無狀態協議,會話通過將會話ID存儲在cookie中而鏈接到用戶。刪除(或拒絕)此cookie將結束您的會話。

+0

+1隊長對救援顯而易見:D – Hannes 2012-03-13 09:41:19

+0

如果你想登錄,大多數網站都會尖叫你,讓你的cookies重新開啓^ _^ – user980058 2012-03-13 09:47:36

+0

我會認爲這個會話沒有cookies。 – user1266069 2012-03-13 09:57:51

3

如果你不想餅乾,你要發送的URL會話ID:除非你使用的是PHP 4.2.0

或更高版本,則需要啓用它 手動構建PHP時。在Unix下,將--enable-trans-sid傳遞給 配置。如果啓用此構建選項和運行時選項 session.use_trans_sid,則相對URI將更改爲 會自動包含會話標識。

http://es.php.net/manual/en/session.idpassing.php

又見session.use_cookiessession.use_only_cookies

這種方法可以讓您輕鬆地分享您的私人數據,因此幾乎沒有人使用它。

+0

我試着從你的鏈接與櫃檯的腳本。但是,它是一樣的,餅乾工作,沒有餅乾不起作用。對我們來說,網站也必須沒有cookies。 – user1266069 2012-03-13 12:29:49

+0

如果您不理解任何答案中提供的信息,請隨時要求澄清。但是請不要一遍又一遍地重複同一個問題,同時建議您只需要準備使用的代碼即可粘貼到您的網站中。 – 2012-03-13 13:10:17