2011-04-27 50 views
1

我有以下的源代碼不同的會話ID每次在session_start執行

session1.php

<?php 

session_start(); 
echo session_id(); 

?> 

session2.php

<?php 

session_start(); 
echo session_id(); 

?> 

當訪問I session1.php然後訪問會話2 .php,我得到了不同的輸出。

爲什麼這樣做呢?

回答

3

瀏覽器不會將會話cookie發送回服務器。這可能有兩個原因。

  1. 瀏覽器被配置爲不發送cookie到服務器。您無法強制瀏覽器發送cookie。在這種情況下,唯一的選擇是在URL中傳遞會話標識符,儘管這通常不是一個好主意。
  2. 服務器配置爲不使用cookie作爲會話標識符(通過session.use_cookies配置選項)。
+0

//剛剛檢查phpinfo()。session.use_cookies設置爲On,但session.save_path沒有值。 session.save_path是否可能導致此問題? – Moon 2011-04-27 01:02:43

+0

@Moon這當然很奇怪。在我的phpinfo()中,即使它沒有在php.ini中明確提到,它也會被設置。 – Oswald 2011-04-27 09:37:25

+0

我知道這是舊帖子,但只面對與IE相同的問題,並找到了解決方案,所以想分享以防萬一有人面臨同樣的問題。我沒有設置我的PHP代碼中的所有全局變量和IE瀏覽器不工作 – 2016-12-15 13:23:35

0

如果你在* nix中運行,嘗試設置的session.save_path到/ tmp。如果這不起作用,請查看瀏覽器的Cookie緩存以查看cookie是否確實正在被瀏覽器保存。

0

嘗試將您的會話cookie存儲在數據庫中而不是一個服務器上。這爲我節省了大量時間和其他會話cookie問題,特別是如果您在共享服務器上。這可能會幫助http://www.raditha.com/php/session.php好運

+0

我想當你保存會話密鑰,然後使用類似memcache的東西。 – Stony 2012-10-29 08:20:52

相關問題