PHPでフォームを作るにあたって、POSTとSESSIONは必ずどこかで使いますよね。
でも、この2つの違いって何だろうって思いませんか?
特にSESSIONは、カート情報やログイン情報、アンケート調査にも使われるので、どのようなものかはしっかりとわかっていたいですよね。
今回は、POSTとSESSIONの違いについて紹介したいと思います。
POSTって何?
POSTは値をサーバーに送信する仕組みです。
どこかに値を保存しておくわけではないため、その値を複数の画面間で引き継ぐことはできません。
使い方はこんな感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>test1</title> </head> <body> <form method="POST" action="test2.php"> <input type="text" name="test"> <input type="submit" value="表示" > </form> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 |
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>test2</title> </head> <body> <?php echo $_POST["test"]; ?> </body> </html> |
testA.htmlで入力された値をサーバーへ送り、送られた値をtestB.phpの$_POSTで取得しています。
SESSIONって何?
SESSIONは、フォームの入力値などの値をサーバー内に保存する仕組みのことです。
SESSIONの情報を削除しない限り、何回画面を遷移してもサーバーに保存してある値をプログラム内で使うことができるんです。
使い方はこんな感じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php session_start(); // セッション管理開始する ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> </head> <body> <p>隠された数字を表示しよう</p> <p>フォームからPOSTした隠れた値をSESSIONにセットし、表示できる</p> <form action="session_set.php" method="post"> <input type="hidden" name="num" value="10"> <input type="submit" name="隠された数字を表示する"/> </form> <?php if (isset($_SESSION["number"])) { echo $_SESSION["number"]; } ?> </body> </html> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<?php session_start(); // セッション管理開始する ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> </head> <body> <?php $num = $_POST['num']; if (!isset($_SESSION["number"])) { $_SESSION["number"] = $num; echo "セッションに隠された数字をセットしました。"; }else{ echo "すでにセッションに隠された数字をセット済です。"; } ?> <a href="session_sample.php">戻る</a> </body> </html> |
test1.htmlで入力された値をサーバーへ送り、送られた値をtest2.phpの$_POSTで取得しています。
test2.phpの$_POSTで取得した値を、$_SESSION[“number”]に入れることで、test1.phpに戻った際に、test1.phpで入力された値が表示されます。
まとめ
POSTとSESSIONの違いは
- POSTは値を1対1の画面間で受け渡しをするのに使う。(複数のページ間で値を引き継ぐことはできない)
- SESSIONは複数のページ間で値を引き継ぐことができる
です。
一般的に、Webページは読込終了した時点でプログラムも終了し、使用変数の内部は破棄されます。これは、ページを移動した場合も同じです。
データが破棄される前に任意のデータをサーバーに送るのがPOST、破棄されるデータの保持を行う仕組みがSESSIONとなります。
自分でちょっとしたプログラムを書くことが理解を深める一番の近道かもしれないですね。