今回は、セッションIDを取得し、また、セッションIDを変更するための関数をご紹介します。
それが、session_id()とsession_regenerate_id()です。
まずは、HTMLをエスケープする関数を作成します。
h.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>HTMLでのエスケープ処理をする関数</title>
</head>
<body>
<?php
//HTMLでのエスケープ処理をする関数
function h($var) {
// is_array() -> $varが配列かどうかを調べる
// $varが配列だったら・・・
if (is_array($var)) {
// array_map() -> 配列の各要素に対して指定した関数を実行する
// array_map('コールバック関数名',配列)
return array_map('h', ($var));
// $varが配列じゃなかったら・・・
} else {
// フォームなどからのユーザーのデータをブラウザに表示する場合は、
// 原則すべてのデータにhtmlspecialchars関数を使用する。
// ENT_QUOTES -> クオートを変換する
return htmlspecialchars($var, ENT_QUOTES, 'UTF-8');
}
}
?>
</body>
</html>
実際のセッションIDに関する関数を書いてみます。まず最初に、上のエスケープ関数を読み込みましょう。
session_id.php
<?php
// HTMLをエスケープする関数を呼び出す
require_once('../213/221/h.php');
// セッションを開始する:session_start()
session_start();
?>
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>現在のセッションIDを取得&変更する</title>
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
</head>
<body>
<?php
echo "<p>現在のセッションIDは、「".h(session_id())."」です</p>";
// 出力:「現在のセッションIDは、「0o1pmvqd894gh19opj6kdjnfjq」です」
// セッションIDを変更する
// 同じセッションIDを使用することは、セキュリティ上宜しくない
session_regenerate_id(true);
echo "<p>現在のセッションIDは、「".h(session_id())."」です</p>";
// 現在のセッションIDは、「e95si5da9tje05kov7kg9g91hp」です
// 上とは異なるセッションIDが出力される
?>
</body>
</html>
以上です。押忍〜