セッションIDの取得と変更

広告

セッションIDは自動的にランダムな値が設定されますが、セッションIDを自分で設定することもできます。「session_id」関数を使います。

session_id
string session_id ( [string id] )
session_id() はカレントのセッション ID を取得 または設定するために使用さ
れます。

パラメータ:
  id  カレントの セッションIDを置換します。その際、session_start()より前
    にコールされている必要があります。 セッションハンドラによっては、セッ
    ション ID として使用できる文字に 制限がある場合があります。例えば、
    ファイルによるセッションハンドラは セッション ID として使える文字は 
    a-z, A-Z, 0-9 に限られます
戻り値:
  session_id() はカレントのセッションのセッションID、もしくはカレントセッ
    ションが存在しない (カレントのセッションID が存在しない) 場合は空文字
    列 ("") を返します。

前のサンプルではクッキーに保存された値を読み出していましたが、「session_id」関数を引数無しで使うことで現在のセッションIDを取得することができます。また引数に値を指定すれば、セッションIDを指定した値に変更が可能です。

ただし、セッションIDはセッションハイジャックなどを防ぐためにも簡単な値を設定することは望ましくありませんので、あまり自分でセッションIDを指定することはしないほうがいいのではと思います。

サンプルコード

では実際に試してみます。

<?php
    session_start();
?>

<html>
<head><title>PHP TEST</title></head>
<body>

<?php

    if (!isset($_COOKIE[session_name()])){
        print('初回の訪問です。セッションを開始します。');
    }else{
        print('セッションは開始しています。<br>');
        print('クッキーは '.$_COOKIE[session_name()].' です。<br>');
        print('session_id()は '.session_id().' です。<br>');
    }

?>

</body>
</html>

上記ファイルをWWWサーバに設置しブラウザ経由で見ると下記のように表示されます。

セッションIDの取得と変更

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。