「PHPの基礎 - セッション」の版間の差分

ナビゲーションに移動 検索に移動
313行目: 313行目:
       print('クッキーは '.$_COOKIE[session_name()].' です。<br>');
       print('クッキーは '.$_COOKIE[session_name()].' です。<br>');
       print('session_id関数は '.session_id().' です。<br>');
       print('session_id関数は '.session_id().' です。<br>');
    }
?>
</syntaxhighlight>
<br><br>
== セッションIDの自動変更 ==
セッションIDが漏洩すると、セッションを乗っ取られる可能性がある。<br>
そのため、セッションIDを常に変更することにより、セキュリティを向上させることができる。<br>
<br>
<code>session_regenerate_id</code>関数を使用して、現在のセッションを終了させることなくセッションIDのみを新しい値に変更できる。<br>
<br>
bool session_regenerate_id ( [bool delete_old_session] )
session_regenerate_id関数は、現在のセッションIDを新しい値に変更する。
その際、現在のセッション情報は維持される。
パラメータ:
    (PHP 5.1以降)
    delete_old_session  関連付けられた古いセッションを削除するかを決める。
                        初期値はfalseである。
                        古いセッション情報を残すことは資源の無駄かつセキュリティも悪くなるため、trueを指定することを推奨する。
    戻り値:
      成功した場合はtrue、失敗した場合はfalseを返す。
<br>
以下の例では、Webページを読み込むたびに、セッションIDを変更している。<br>
<syntaxhighlight lang="php">
<?php
    session_start();
    $old_id = session_id();
    session_regenerate_id(true);
    $new_id = session_id();
?>
<?php
    if(!isset($_COOKIE[session_name()]))
    {
      print('初回の訪問です。セッションを開始します。');
    }
    else
    {
      print('前のセッションIDは '.$old_id.' です。<br>');
      print('今のセッションIDは '.$new_id.' です。<br>');
     }
     }
  ?>
  ?>

案内メニュー