2012-06-20 67 views
0

我正在使用HTTPS,我想爲PHPSESSID和我創建的其他cookies設置安全屬性。session_set_cookie_params似乎可以正常工作,但Cookie不受影響

session_set_cookie_params(0,'/','', isset($_SERVER["HTTPS"])); 
session_start(); 
$data = session_get_cookie_params(); 
foreach ($data as $key=>$value) { 
    echo $key.$value; 
} 

功能似乎工作,實際上,打印出session_get_cookie_params()安全屬性等於1
但是,當我通過FirefoxFirebug+Firecookie檢查我的Cookie狀態,他們似乎都被不受影響由聲明。即使更改域屬性也會得到相同的結果。

我正在使用XAMPP,在Ubuntu和本地主機上(localhost應該對安全問題有特殊的處理,也許)。 感謝您的幫助!

+0

感謝。我很抱歉名稱格式錯誤,但我是一個新手... – poros

+0

歡迎你,我只是想幫助。順便說一句你有嘗試過使用http? – Conan

+0

是的,我試過了,但結果完全一樣:只是顯然設置了。 – poros

回答

2

使用session_set_cookie_params時,請嘗試使用session name

參考:
PHP session_set_cookie_params
PHP session_name

+0

它的工作原理!非常感謝,在我上次訪問期間,我沒有注意到對該手冊頁的評論。會話名稱必須對每個會話都是唯一的嗎? – poros

+0

好吧,這取決於你的需要。如果你有另一個目的來創建一個新的會話名稱比做它,如果不是,那麼不要。 – Conan

1

我有同樣的問題,並使用會話名稱()沒有幫助。我不得不手動禁用在session_start()生成的cookie並生成該cookie這樣的:

$sessionID = $_COOKIE[session_name()]; 
ini_set('session.use_cookies', false); 
if ($sessionID) session_id($sessionID); // reuse if available 
session_start(); 
// session_set_cookie_params() is not working with a "path" part 
// this way every click is extending the session for $timeout more 
setcookie(session_name(), $sessionID ?: session_id(), time() + $timeout, $cookiePath, $_SERVER['HTTP_HOST'], false, true); 

的x通電由:用於編輯,柯南PHP/5.4.15

相關問題