簡體   English   中英

session_id()和session_name()究竟是什么? 說明如何在以下代碼中使用它們

[英]What exactly is session_id( ) and session_name( )? Explain how they are being used in the following code

?php
function destroy_session_and_data() {
session_start();
$_SESSION = array();
if (session_id() != "" || isset($_COOKIE[session_name()]))
setcookie(session_name(), '', time() - 2592000, '/'); 
session_destroy();
} ?>

我理解上面的代碼用於終止會話,但我無法理解if條件和setcookie命令的必要性。

還能請你解釋一下session_id()和session_name()到底是什么。

一個明確的解釋將是最受歡迎的。 謝謝

PHP使用cookie來管理會話; 具體而言,通過在cookie內為該會話設置標識鍵/值對。

  • 會話的名稱是cookie的名稱; 基於PHP的網站的默認名稱是PHPSESSID session_name()返回會話名稱,或者,如果傳遞參數,則更新會話名稱。
  • cookie中的鍵/值對描述會話ID; key表示它是會話標識符,值是會話標識符本身。 session_id()返回會話ID,或者,如果傳遞參數,則更新會話ID。

問題中的代碼檢查是否存在與請求一起傳遞的會話:首先通過使用session_start()啟動/重新激活會話,然后檢查與會話名稱匹配的現有cookie。 如果代碼找到一個,它會強制瀏覽器通過將其到期日期設置為過去的時間來刪除cookie。

從手冊:

session_id()用於獲取或設置當前會話的會話ID。

session_name()返回當前會話的名稱。 如果給出name,則session_name()將更新會話名稱並返回舊會話名稱。

id用作存儲會話的數據庫的主鍵(唯一)(默認情況下只在文件ondisk中), name只是一個名稱。 我不確定name是否必須是唯一的。 因此,在這種情況下,代碼檢查session_id(從瀏覽器cookie獲取數據並在本地數據庫中查找)或者是否存在具有給定session_name的cookie。 如果是這樣,它將cookie(客戶端)的到期時間設置為43分鍾前並破壞會話(服務器端)。

要知道訪問者所在的“會話”,就會設置cookie。 只要該cookie可用,用戶將保持在同一會話中。 要結束會話,需要將其刪除(這解釋了setcookie()。

session_id()和session_name()在php manaul中

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM