PHP 中的 session ID

Habdul Hazeez 2023年1月30日
  1. 使用 session_id() 函式檢查會話 ID
  2. 從 PHP 中的 $_session[] 變數設定和獲取使用者會話 ID
  3. 在 PHP 中使用 var_dump() 獲取會話 ID
  4. 會話 ID 和唯一性
PHP 中的 session ID

會話 ID 的主要用途之一是識別 Web 應用程式上的使用者或事件。本文將解釋如何藉助內建的 PHP 函式(如 session_start()session_id())使用 PHP 會話 ID。

使用 session_id() 函式檢查會話 ID

在檢查會話 ID 之前,你需要使用 session_start() 啟動 PHP 會話。之後,你可以呼叫 session_id() 函式。此函式將返回當前會話 ID。

<?php
    session_start();

    echo session_id();
?>

輸出:

3rd5hnbqgjhi3fq4b2edsajq81
注意
執行程式碼時,上述會話 id 將與你的不同。

從 PHP 中的 $_session[] 變數設定和獲取使用者會話 ID

PHP $_SESSION 變數 是一個關聯陣列,包含當前指令碼的 PHP 會話變數。你可以將特定的鍵值對新增到陣列中,將其從陣列中刪除,或者清空整個 $_SESSION 變數。

你可以將經過身份驗證的使用者的詳細資訊儲存在 $_SESSION 變數中。在此之前,你需要啟動一個 PHP 會話。一旦會話處於活動狀態,你就可以為經過身份驗證的使用者註冊會話。之後,你可以使用會話 ID 在系統中跟蹤使用者。當使用者登出時,你可以銷燬會話。

在下一個程式碼塊中,你將找到有關如何設定和獲取使用者會話 ID 的詳細資訊。

<?php
    // Start the session
	session_start();

	// get the session id
	$session_id = session_id();

	// The username of the user. On most occasions,
	// you'll get this from a MySQL query
	$username = "DelftStack";

	// Register a session for the user
	$_SESSION['username'] = $username;

	// Display the session id and the registered
	// register
	echo "The session id is: " . $session_id;
	echo "<br /> The session has been registered to: " . $username;
?>

輸出:

The session id is: d7ao75228pobka332fqeho10l3
The session has been registered to: DelftStack

請記住,你的會話 ID 將與上面顯示的不同。

你可以使用以下程式碼銷燬會話:

<?php
    if (isset($_SESSION['username'])) {
        
        // Reset the session
		unset($_SESSION);
        
        // Destroy the session
		session_destroy();

		if (empty($_SESSION)) {
			echo "Session destroyed...";
		}
	}
?>

輸出:

Session destroyed...

在 PHP 中使用 var_dump() 獲取會話 ID

var_dump() 函式將轉儲有關變數的詳細資訊,包括 $_SESSION[] 變數。啟動會話並將會話 ID 儲存在變數中以開始此過程。一旦會話 ID 在變數中,你可以使用 var_dump 轉儲它。

下一個程式碼塊展示瞭如何使用 var_dump() 獲取會話 ID。

<?php
    // Start the session
	session_start();

	// get the session id
	$session_id = session_id();

	// store the session id in the
	// session variable 
	$_SESSION['id'] = $session_id;

	// Dump the username
	var_dump($_SESSION['id']);
?>

輸出:

string(26) "7qfm3qvjj1vku6h78p73qh9jmn" 
注意
你的會話 ID 將與上面顯示的不同。

會話 ID 和唯一性

當你需要使用者的唯一識別符號時,建議不要啟動新會話。這就是像 uniqid() 這樣的函式發揮作用的時候。但是,如果你有一個活動會話,則可以使用 session_id()。不過,不要依賴它來獲得唯一性。

原因如下:具有多個選項卡的 Web 瀏覽器將使用相同的過程。因此,它們將使用相同的會話識別符號。這意味著不同的使用者連線將具有相同的 id。

作者: Habdul Hazeez
Habdul Hazeez avatar Habdul Hazeez avatar

Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.

LinkedIn

相關文章 - PHP Session