2016-01-24 182 views
0

我是新來的PHP,特別是對cookie和session,所以如果我刪除使用會話或餅乾PHP會話和cookie破壞

session_unset(); 
session_destroy(); 
//for session 

setcookie("user", "", time() - 3600); 
//for cookie 

它會:
1)刪除會話或餅乾只已運行上面的代碼
2),或刪除所有會話或cookie的所有遊客

從邏輯一個特定訪問者,它應該是1,但我只是想確保。任何人解釋,將不勝感激,謝謝。

+1

閱讀本文http://stackoverflow.com/questions/5697822/session-unset-or-session-destroy – Samir

回答

1

session_start()在客戶端創建一個cookie,默認名稱爲PHPSESSID,並且這個ID很獨特,很難猜測。如果cookie已經創建並且尚未過期,它也將恢復會話。

session_regenerate_id()重新生成會話ID和移動在會話數據由$SESSION['key'] = 'value';設置一個新的ID,這是很方便的登錄系統,以刷新成功登錄會話ID針對session attacks防禦。

session_destroy()刪除存儲在服務器上的會話數據以獲取該會話ID並請求客戶端刪除該cookie,但爲了節省性能,此操作通常不會立即完成。

您還可以創建命名會話,並專門啓動並銷燬它們,但通常不需要。

如果您願意,您可以將handle session data存儲在數據庫中。

+1

一個便箋,經常被遺忘,使用[session_write_close](http://php.net/manual/en /function.session-write-close.php)以防止併發寫入。這將釋放會話鎖,以便與使用'session'執行的同時腳本(例如ajax)一起使用。 – dbf

+0

@dbf我當時完全沒有意識到這一點,所以非常感謝分享。我剛剛意識到爲什麼'session_start()'返回一個布爾值。 – Xorifelse

+0

歡迎您;)現在您可以毫不費力地編輯問題並審閱:D – dbf

0

此代碼將刪除個人訪問者的會話cookie &刪除服務器上的會話文件。
setcookie(..)將在此訪問者上創建cookie。

0

正確的方法來設置一個會話

$_SESSION['session_name'] = 'value of the session'; 

session_destroy()將所有會話。

您還需要在代碼最頂部的session_start()開始任何 類型的PHP會話。同樣可以設置cookie並銷燬cookie。

學習php的最好方法是先讀本書,然後 你可以去數字化學習。你不能從網上學習,我建議你得到一本php書籍 ;通過整個事情然後上網 寫一小段代碼,並啓動小文件作爲測試牀。

紙先,下數字;它需要一些時間,所以給自己一個項目來工作。對不起,我被推遲了,但我建議你應該這樣做。

0

session_destroy();將刪除服務器上爲該用戶存儲的所有會話。如果您正在尋找一個特定的會話,如用戶名,請使用$_SESSION['username'] = $username;來創建它。然後使用session_unset('username');取消設置請小心將會話始於文檔頂部。