2008/7/15 久米
ブラウザ | Webサーバ | |
こんにちは田中です。 | → | |
← | いらっしゃいませ田中様。 | |
いいお天気ですね。 | → | |
← | はじめましてどちら様ですか? | |
田中ですが。 | → | |
← | いらっしゃいませ田中様。 | |
このみたらしだんご3本ください。 | → | |
← | ありがとうございます。どちら様ですか? | |
がーーん。 | → | |
← | どちら様ですか? |
ブラウザ | Webサーバ | |
こんにちは田中です。 | → | |
← | いらっしゃいませ田中様。 (整理券3808番を渡す) |
|
いいお天気ですね。 (整理券3808番を見せる) |
→ | |
← | (整理券3808番を確認) どぴーかんですね田中様。 |
|
このみたらしだんご3本ください。 (整理券3808番を見せる) |
→ | |
← | (整理券3808番を確認) ありがとうございます田中様。 (みたらしだんご3個をメモ) |
|
イチゴのショートケーキ1つください。 (整理券3808番を見せる) |
→ | |
← | (整理券3808番を確認) ありがとうございます田中様。 (イチゴのショートケーキ1つをメモ) |
|
おいくらですか。 (整理券3808番を見せる) |
→ | |
← | (整理券3808番を確認) (メモを確認) ありがとうございます田中様。 合計300円です。 |
セッション管理機能を使うと、複数のページにわたって特定の情報を維持し続けることができます。
セッション管理は次の2つで実現できます。参照 PHPセッション管理
1 | セッション管理を使用するページに下記を記述する。 |
<?php session_start(); ?> |
2 | セッション管理中に複数のページにまたがって |
<?php session_start(); $_SESSION['username'] = $_POST['username']; ?> <?php $_SESSION['username'] = $name; print "<p>いらっしゃいませ。".$_SESSION['username']."様</p>"; ?> |
では、試してみましょう。
session1.htm | <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>session1</title> </head> <body> <h1>銀座コージーコージー</h1> <form method="post" action="session2.php"> 名前:<input type="text" name="username"> <input type="submit" name="sub" value="お店に入る"> </form> </body> </html> |
session2.php | <?php session_start(); $_SESSION['username'] = $_POST['username']; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>session2</title> </head> <body> <h1>銀座コージーコージー</h1> <?php print "<p>いらっしゃいませ。".$_SESSION['username']."様</p>"; ?> <form method="post" action="session3.php"> みたらしだんご <select name="mitarashi"> <option value="0" selected>何本?</option> <option value="1">1本</option> <option value="2">2本</option> <option value="3">3本</option> </select><br><br> <input type="submit" name="sub" value="買う"> </form> </body> </html> |
session3.php | <?php session_start(); $_SESSION['mitarashi'] = $_POST['mitarashi']; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>session3</title> </head> <body> <h1>銀座コージーコージー</h1> <?php print "<p>ありがとうございます。".$_SESSION['username']."様</p>"; ?> <p>おいしいショートケーキもありますよ。</p> <form method="post" action="session4.php"> イチゴのショートケーキ <select name="ichigo"> <option value="0" selected>何個?</option> <option value="1">1個</option> <option value="2">2個</option> <option value="3">3個</option> </select><br><br> <input type="submit" name="sub" value="買う"> </form> </body> </html> |
session4.php | <?php session_start(); $_SESSION['ichigo'] = $_POST['ichigo']; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>session4</title> </head> <body> <h1>銀座コージーコージー</h1> <?php print "<p>ありがとうございます。".$_SESSION['username']."様</p>"; ?> <p><a href="session5.php">おいくらですかと聞く</a></p> </body> </html> |
session5.php | <?php session_start(); $gokei=$_SESSION['mitarashi']*40+$_SESSION['ichigo']*180; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>session5</title> </head> <body> <h1>銀座コージーコージー</h1> <?php print "<p>ありがとうございます。".$_SESSION['username']."様</p>"; print "<p>合計 ".$gokei."円です。</p>"; $_SESSION=array(); session_destroy(); ?> </body> </html> |
※最後の2行はサーバ側のセッションデータを棄却するスクリプトです。
$_SESSION=array();
session_destroy();
セッションデータを使わなくなったら、削除しておいた方がベターです。
手動で棄却しなくても、いつか自動的に削除されますが。
コラム1 セッション変数セッション管理中に変数を共有する方法には、次の2種類があります。
PHPで推奨されているのは、$_SESSIONの方法です。そのため、本講義では、$_SESSIONの方法を使用します。 参照:PHPマニュアルより抜粋「セキュリティとコードの可読性のために$_SESSIONの使用 が推奨されます。
コラム2 セッションデータはどこに格納? C:\Windows\php.iniに書かれている設定によります。 使われなくなったセッションデータは、デフォルトでは、
コラム3 携帯はクッキーが使えない携帯でセッション管理を実現する方法は下記の2つです。
コラム4 クッキー無効にしている人の対策
|