・セッションは、サーバーがクライアントを識別する際によく利用されます。
・セッションとは、通信の「開始」から「終了」までの一連の流れのことです。
・クライアントとサーバーの通信においては、クライアント(ブラウザ)からサーバーにアクセスされた時点が「開始」となり、サーバーとの接続が遮断された時点が「終了」となります。
・例:会員制サイトでは、クライアントがサーバーに会員情報(IDやパスワード)を渡します。サーバーはセッションIDを発行しクッキーに格納してクライアントに渡します。クライアントは以後の通信時にクッキーサーバーに渡すことで会員であることを認識してもらうことが出来ます。
セッションの流れ
1. クライアント(ブラウザ)がWEBサーバーにアクセスします。
2. WEBサーバーのプログラムがセッションIDを発行し、クッキーに格納してクライアントに引き渡します。
3. クライアントが再度WEBサーバーにアクセスする際、クッキーを引き渡します。
4. WEBサーバーのプログラムがセッションIDを取得してクライアントを識別します。
セッション関数と用途
セッション関数とセッション変数を一覧で紹介します。
関数 | 用途 |
session_start() | 新しいセッションを開始、あるいは既存のセッションを再開する。 |
session_id() | 現在のセッション ID を取得または設定する。 |
session_name() | 現在のセッション名を取得または設定する。 |
session_regenerate_id() | 現在のセッションIDを新しく生成したものと置き換える。 |
session_unset() | 全てのセッション変数を開放する。 |
session_destroy() | セッションに登録されたデータを全て破棄する。 |
$_SESSION[変数名] | グローバルセッション変数 |
サーバーのセッションを確認する方法
以降は、echoの短縮構文を用いた表現方法を用いています。下記リンク先もご参照頂けますと幸いです。
セッションの開始、名前、IDの取得
セッションの開始:session_start()
<php session_start() ?>でセッションを開始します。
セッションIDの取得:session_id()
echo session_id()でセッションIDを取得します。
セッション名の取得:session_name()
echo session_name()でセッション名を取得します。
<!DOCTYPE html>
<?php
session_start();
?>
<html lang="ja">
<head>
<title>セッションの確認</title>
</head>
<body>
<?= session_id()?>
<br>
<?= session_name()?>
</body>
</html>
// 実行結果
ehc4i9if93ri9de1vpb7h1v1pl
PHPSESSID
セッションの保存・取得・削除
セッションの保存・取得・削除
<?php
session_start();
$_SESSION["username"]="Tanaka";
// <= セッションの保存:$_SESSION["キー(key)"]="値(value)" でセッション変数にキーを指定して値を代入出来ます。今回は、キー(key)="username", 値(value)="Tanaka"です。
// 補足:$_SESSIONは連想配列型です。そのため、キー(key)と値(value)を持つ必要があります。(連想配列の例、array={"key1":"value1", "key2":"value2"})
?>
<html>
<head>
<title>sessionのサンプル</title>
</head>
<body>
<p>サーバーに保存されているセッションは、
<?php echo $_SESSION["username"]; ?>
<!-- <=セッションの取得:$_SESSION["キー"]で定義したセッション変数を取得できます。 -->
です。
</p>
<p>以下ではセッションの削除を行っています。
<?php unset($_SESSION["username"]); ?>
<!-- <=セッションの削除:unset($_SESSION[‘キー’] );でセッション変数を削除しています。 -->
<?php echo $_SESSION["username"]; ?>
</p>
</body>
</html>
// 実行結果
サーバーに保存されているセッションは、 Tanaka です。
以下ではセッションの削除を行っています。
Warning: Undefined array key "username" in C:\xampp\htdocs\session_practice.php on line 20
<= 18行目で$_SESSION["username"]を削除していますので、20行目で$_SESSION["username"]を呼び出すと、上記のように定義されていませんとエラーが返されます。
これでセッションが削除されていることが確認出来ました。
因みに、新規sessionが発行された際は、xampp環境で処理を実行している場合、xamppのtmpフォルダにSSID名のファイルが作成されます。
また、session名を保存した場合は、そのsession名がファイル内に保存されます。
セッションの保存・取得と共有フォルダに保存されるファイルの内容
コード
<?php
session_start();
$_SESSION["username"]="Tanaka";
?>
<html>
<head>
<title>sessionのサンプル</title>
</head>
<body>
<p>サーバーに保存されているセッションは、
<?php echo $_SESSION["username"]; ?>
です。
</p>
<p>セッション名は、<?php echo session_name(); ?> です。</p>
<p>セッションIDは、<?php echo session_id(); ?> です。</p>
</body>
</html>
コメント