2011/10/4 久米
| ブラウザ | 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=utf-8"> <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=utf-8">
<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=utf-8">
<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=utf-8">
<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=utf-8">
<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 セッションデータはどこに格納? php.iniに書かれている設定によります。 使われなくなったセッションデータは、デフォルトでは、
コラム3 携帯はクッキーが使えない(スマホはOK)携帯でセッション管理を実現する方法は下記の2つです。
コラム4 クッキー無効にしている人の対策
|