PHP のセッション ID

Habdul Hazeez 2023年1月30日
  1. session_id() 関数でセッション ID を確認する
  2. PHP の $_session[] 変数からユーザーセッション ID を設定および取得する
  3. PHP で var_dump() を使用してセッション ID を取得する
  4. セッション ID と一意性
PHP のセッション ID

セッション ID の主な用途の 1つは、Web アプリケーション上のユーザーまたはイベントの識別です。この記事では、session_start()session_id() などの組み込み PHP 関数を使用して PHP セッション ID を操作する方法について説明します。

session_id() 関数でセッション ID を確認する

セッション ID を確認する前に、session_start() を使用して PHP セッションを開始する必要があります。その後、session_id() 関数を呼び出すことができます。この関数は、現在のセッション ID を返します。

<?php
    session_start();

    echo session_id();
?>

出力:

3rd5hnbqgjhi3fq4b2edsajq81
上記のセッション ID は、コードを実行したときのセッション 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