2014-01-08 245 views
1

我的PHP代碼有一些問題。我需要修改我的同事的部分代碼,我不明白髮生了什麼。PHP:關閉瀏覽器後我的cookies不會被刪除

在登錄頁面中,他檢查了登錄名和密碼,如果沒有問題,$ _SESSION啓動並且用戶可以訪問應用程序。

問題是,如果用戶沒有點擊deconnexion鏈接並退出頁面(即使他關閉了瀏覽器或關閉了電腦),他總是連接上。我查了一下,有一個cookie。

我的第一個問題是爲什麼這個cookie存在,因爲代碼中沒有setCookie()。

這是關於我的php.ini會話的一部分:

session.save_handler = files 
session.save_path = "N;/path" 
session.save_path = "/var/lib/php/session" 
session.use_cookies = 1 
session.use_only_cookies = 1 
session.name = PHPSESSID 
session.auto_start = 0 
session.cookie_lifetime = 0 
session.cookie_path =/
session.cookie_domain = 
session.cookie_httponly = 
session.serialize_handler = php 
session.gc_probability = 1 
session.gc_divisor = 1000 
session.gc_maxlifetime = 1440 
session.bug_compat_42 = Off 
session.bug_compat_warn = Off 
session.referer_check = 
session.entropy_length = 0 
session.entropy_file = 
session.cache_limiter = nocache 
session.cache_expire = 180 
session.use_trans_sid = 0 
session.hash_function = 0 
session.hash_bits_per_character = 5 
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" 

所以我需要知道如何當用戶關閉瀏覽器刪除cookie。 (我無法定義過期值,因爲應用程序使用某些處理過程,在獲得結果之前可能需要很長時間)。

你能幫我嗎?

感謝

安琪莉

+0

但我不記得可能這個字符串session.cookie_lifetime = 0會告訴你有多少時間登錄到系統中,會話有多少「生命」,0代表「永遠」 – Goikiu

+0

@Goikiu:是的,它是。但是如果我提出一個值,問題是用戶可能會失去他想要的結果,因爲頁面的負載太長(我使用hadoop來處理大數據)。我不知道如果我真的cleau:■ – Angelik

+0

是的,你是清楚的,你會問過運行(而不是INI設置更多)太多時間。 – Goikiu

回答

0

你不能刪除任何餅乾,因爲你不能保證真正有這樣一個文件 - 瀏覽器和關於餅乾Web服務器之間的合同是該數據將在呈現合格的請求。

您需要設置您希望刪除的過期時間爲coockie的過期日期。然後瀏覽器應該自動刪除它。

+1

但我不明白這一點:; cookie的生存時間,如果爲0,則直到瀏覽器重新啓動。 ; http://www.php.net/manual/en/session.configuration.php#ini.session.cookie-lifetime session.cookie_lifetime = 0 =>爲什麼即使我關閉瀏覽器,cookie也總是在這裏? – Angelik