PHP 5 セッション

❮ 前章へ 次章へ ❯

セッションは、複数のページにまたがって使用する情報を(変数に)格納する方法です。

クッキーとは異なり、情報はユーザのコンピュータに保存されません。


PHPセッションとは?

アプリケーションで作業をするときには、それををオープンして、何らかの変更を加えてから、それを閉じます。 これはセッションによく似ています。コンピュータは、あなたが誰であるかを知っています。 アプリケーションの起動した時や終了した時を知っています。 しかし、インターネット上には1つの問題があります:Webサーバーは、HTTPアドレスが状態を維持していないため、自分が誰であるか、 何をしているのかがわかりません。

セッション変数は、複数のページにわたって使用するユーザ情報(たとえば、ユーザ名、お気に入りの色など)を格納することによって、この問題を解決します。 セッション変数は、デフォルトで、ユーザがブラウザを終了するまで存続します。

セッション変数は、1人のユーザに関する情報を格納し、1つのアプリケーション内のすべてのページで使用できます。

チップ: 永続ストレージが必要な場合は、データをデータベースに格納することができます。


PHPセッションの開始

セッションは、session_start()関数で開始します。

セッション変数は、PHPのグローバル変数$_SESSIONで設定します。

今、"demo_session1.php"という新しいページを作ります。このページで、新しいPHPセッションを開始し、いくつかのセッション変数を設定します:

<?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// Set session variables
$_SESSION["favcolor"] = "green";
$_SESSION["favanimal"] = "cat";
echo "Session variables are set.";
?>

</body>
</html>
例の実行 »

注: session_start()関数は、文書の最初になければなりません。 あらゆるHTMLタグの前に置きます。


PHPセッション変数の値の取得

次に、"demo_session2.php" という別のページを作成します。このページから、最初のページ( "demo_session1.php")で設定したセッション情報にアクセスします。

セッション変数は、新しいページに個別に渡されるのではなく、各ページの先頭にあるセッション(session_start())から取得することに注意してください。

また、すべてのセッション変数の値がグローバルな$_SESSION変数に格納されていることにも注意してください:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// Echo session variables that were set on previous page
echo "Favorite color is " . $_SESSION["favcolor"] . ".<br>";
echo "Favorite animal is " . $_SESSION["favanimal"] . ".";
?>

</body>
</html>
例の実行 »

ユーザセッションのすべてのセッション変数値を表示する別の方法は、次のコードを実行することです:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
print_r($_SESSION);
?>

</body>
</html>
例の実行 »

どのように動作するのですか?どのように私のことを知るのですか?

ほとんどのセッションは、ユーザのコンピュータ上で765487cf34ert8dede5a562e4f3a7e12のようなユーザ・キーを設定します。 その次に、セッションが別のページで開かれると、ユーザ・キーでコンピュータをスキャンします。 一致した場合はそのセッションにアクセスし、一致しない場合は新しいセッションを開始します。


PHPセッション変数の変更

セッション変数を変更するには、単に上書きするだけです:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// to change a session variable, just overwrite it
$_SESSION["favcolor"] = "yellow";
print_r($_SESSION);
?>

</body>
</html>
例の実行 »

PHPセッションの破棄

すべてのグローバルセッション変数を削除してセッションを破棄するには、session_unset()およびsession_destroy()を使用します:

<?php
session_start();
?>
<!DOCTYPE html>
<html>
<body>

<?php
// remove all session variables
session_unset();

// destroy the session
session_destroy();
?>

</body>
</html>
例の実行 »

❮ 前章へ 次章へ ❯