セッションとは?
セッション
これらに対して、
答えは、
sessionという単語は、
PHPプログラムにおけるセッション
そこで、
電話での会話は、
PHPでセッションが繋がっているかどうかを確認する方法として、

- ※1 前回紹介したとおり、
クッキーにもセキュリティの問題はあるため、 これで完全に安心とはいえません。
セッションの開始
つながっている状態にすることを、
セッションはクッキーを利用して実現していますので、
<?php
// ..........
session_start();
// ..........
?>
<html>
<!-- ..... コンテンツ ..... -->
</html>
リスト2に、
- ※2 セキュリティの面からは、
セッションIDを画面に表示させるのは好ましいことではありませんが、 説明のためにこの例を示しています。
<?php
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>セッションの開始と終了</title>
</head>
<body>
<h4>セッションの開始と終了</h4>
<?php
echo 'セッションは開始されました<br>ID = ' . session_id();
?>
</body>
</html>

セッションの切り替え
session_
<?php
session_start();
if ( isset( $_POST[ 'regenerate' ] ) ) {
session_regenerate_id();
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>セッションの開始と終了</title>
</head>
<body>
<h4>セッションの開始と終了</h4>
<?php
echo 'セッションは開始されました<br>ID = ' . session_id();
?>
<form method="post" action="<?php echo $_SERVER[ 'PHP_SELF' ]; ?>"><div>
<input type="submit" name="regenerate" value="IDを変更">
</div></form>
</body>
</html>

セッションの終了
つながっている状態をやめることを、
Webブラウザを閉じたとき
デフォルトの設定でセッションを開始したときは、
設定した有効期限を過ぎたとき
セッションを開始する前に、
セッションに有効期限を設定するのはsession_
session_set_cookie_params( 60 * 60 ); // 1時間有効なセッション
session_start(); // セッション開始
強制的に終了するとき
PHPプログラムでセッションIDを削除すると、
session_destroy(); // 関連データの廃棄
setCookie( 'PHPSESSID' ); // 通常はこれで削除できる
setCookie( 'PHPSESSID', '', 0, '/' ); // 上記でクッキーを削除できないとき
- ※ 'PHPSESSID'は設定により異なる場合がある
変数の利用
セッションでは、
リスト6は
<?php
session_start();
if ( empty( $_SESSION[ 'count' ] ) ) $_SESSION[ 'count' ] = 0;
if ( isset( $_POST[ 'inc' ] ) ) $_SESSION[ 'count' ]++; // 増やす
if ( isset( $_POST[ 'dec' ] ) ) $_SESSION[ 'count' ]--; // 減らす
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>セッションの開始と終了</title>
</head>
<body>
<h4>セッションの開始と終了</h4>
<?php
echo 'カウンタ : ' . $_SESSION[ 'count' ]; // カウンタの値
?>
<form method="post" action="<?php echo $_SERVER[ 'PHP_SELF' ]; ?>"><div>
<input type="submit" name="inc" value="増やす">
<input type="submit" name="dec" value="減らす">
</div></form>
</body>
</html>

上記の3つのリストを実行する前に、