LoginSignup
3
1

More than 5 years have passed since last update.

【PHP】セッションIDを取得&変更する関数

Posted at

今回は、セッション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>

以上です。押忍〜

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1