我在Chrome上遇到cookie問題。 我在php中使用setcookie()函數來自動重新驗證已經通過驗證過程(使用LinkedIn API)的用戶。Cookie不會在Chrome上獲取正確的值
問題是,我設置的cookie在Firefox 11上工作正常,但似乎在Chrome上幾秒後就會被刪除。我已經測試了一堆用戶,他們面臨同樣的問題(我正在等待其他瀏覽器的反饋)。
下面是設置的Cookie代碼:
setcookie('CookieID', $var, (time()+365*24*3600), NULL, NULL, false, true);
setcookie('LinkedInAuth', $var, (time()+365*24*3600), NULL, NULL, false, true);
它是一個已知的問題?我該如何解決這個問題?
編輯5:
我換了個話題的標題,因爲我完全回顧我的做法。 (我也刪除了以前的編輯,因爲它們無關緊要) 我現在使用openssl_random_pseudo_bytes()
函數生成唯一ID,而不是使用LinkedIn ID作爲我的cookie的值。 這是新代碼:
$random = openssl_random_pseudo_bytes(32);
$UserKey = bin2hex($random);
$expiration= time() + 365*24*3600;
setcookie('CookieID', $UserKey, $expiration, NULL, NULL, false, false);
所以,現在,Chrome瀏覽器創建一個隨機值一個cookie,如問,cookie過期時間是正確的。不過,這不是正確的價值!我在控制檯中回顯$UserKey
,它與cookie有不同的值。但在FF和IE上它的功能就像一個魅力! 響應標題給我提供了我的cookie的錯誤值,但請求標題有正確的值。
有人有任何經驗嗎?問題來自我的代碼或我正在使用的函數嗎?
你有沒有嘗試把計算放在一個單獨的變量中,比如$ expire = time()+ 31536000? 'setcookie('CookieID',$ var,(time()+ $ expire),NULL,NULL,false,true);' –
我剛試過這個,同樣的問題。試過'$ expiration = time()+ 31536000'和'$ expiration = 31536000' –
這個問題很簡單 - 在PHP中''var''沒有設置**,不管你怎麼說。如果是,價值將被髮送。你甚至想出了一個證明它的測試。唯一的另一種可能性是'$ var'包含混淆了cookie解析的值,這就是爲什麼您發送的值應該被編碼的原因。 – Mjh