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

広告

セッションIDは自動的にランダムな値が設定されますが、セッションIDを自分で設定することも出来ます。「session_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を指定することはしないほうがいいのではと思います。

サンプルプログラム

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

sessiontest5.php

<?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の取得と変更

PHP入門の他の記事を見てみる

( Written by Tatsuo Ikura )