画面間のデータ受け渡し(POST, GET)
(ブログ記事の一覧は「こちら」)
本コースは、Webアプリの制作を行うために必要な基本的な内容について、実際に作成しながら学んでいきます。
主に、PHPのプログラミングの基本について説明していきます。
ここで学ぶこと
まずは準備として、PHPのプログラミングの実行方法について確認していきます。
基本的な内容が確認できたら、PHPの重要な基本機能として、 画面間のデータ受け渡しについて確認していきます。
準備
PHPのプログラミングの実行方法について確認していきます。
まず「XAMPP」を起動してください。
「Apache」の「start」ボタンをクリックして、Apacheを起動します。
次に、「Explorer」ボタンをクリックすると、XAMPPの場所のエクスプローラーが開きます。 「htdocs」を開いてください。ここがWebサーバーのルートの場所になります。
http://localhost/
まず、テキストエディタで以下を入力して、「test.php」としてhtdocsフォルダに保存してください。
<?php echo 'こんにちは'; ?>
ブラウザで以下にアクセスしてください。
http://localhost/test.php
「こんにちは」と表示されれば成功です。
以下のprintを使っても同じ結果が得られます。
<?php print 'こんにちは'; ?>
今後のために、基本的なHTMLタグも記述しておきましょう。
<html> <head> <meta charset="UTF-8"> </head> <body> <?php echo 'こんにちは'; ?> </body> </html>
ひとまず準備はOKです。
例題
PHPの重要な基本機能として、 画面間のデータ受け渡しについて確認していきます。
POST, GETは、いずれもHTTPメソッドというもので、HTTPでデータを送信するときのリクエストの方法です。
つまり、データを送信するときに、サーバへのリクエストを行う必要がありますが、そのときの方法に違いがあります。
作成するもの
いずれも、送信側のPHPファイルと、受信側のPHPファイルを作成することになります。
画面間のデータ受け渡し(POST)
まずは、POSTによる画面間のデータ受け渡しについて確認していきます。
まずは送信側です。下記のコードを「sample_post_send.html」として作成してください。
<html> <head> <meta charset="UTF-8"> </head> <body> <h1>POSTでデータを送信する</h1> <form action="sample_post_receive.php" method="POST"> 名前:<input type="text" name="name"> 趣味:<input type="text" name="hobby"> <input type="submit" value="送信する"> </form> </body> </html>
次は受信側です。下記のコードを「sample_post_receive.php」として作成してください。
<?php $name = $_POST['name']; $hobby = $_POST['hobby']; ?> <html> <head> <meta charset="UTF-8"> </head> <body> <h1>受信ページ</h1> <p>あなたは<?php echo $name;?>さんです。</p> <p>あなたの趣味は<?php echo $hobby;?>です。</p> </body> </html>
送信側でのinputタグのname属性を持つテキストボックスに対して、受信側で $_POST[name属性の値] とすることでテキストボックスの値を受け取ることができます。
実行、確認
それぞれのファイルを「xampp\htdocs」以下に置き、ブラウザで以下を実行してください。
http://localhost/sample_post_send.html
「名前」と「趣味」の欄に入力して、「送信する」をクリックします。
入力したテキストが表示されていれば、POSTによる画面間のデータ受け渡しができていることが確認できます。
画面間のデータ受け渡し(GET)
次に、GETによる画面間のデータ受け渡しについて確認していきます。
まずは送信側です。下記のコードを「sample_get_send.html」として作成してください。
<html> <head> <meta charset="UTF-8"> </head> <body> <h1>GETでデータを送信する</h1> <form action="sample_get_receive.php" method="GET"> 名前:<input type="text" name="name"> 趣味:<input type="text" name="hobby"> <input type="submit" value="送信する"> </form> </body> </html>
次は受信側です。下記のコードを「sample_get_receive.php」として作成してください。
<?php $name = $_GET['name']; $hobby = $_GET['hobby']; ?> <html> <head> <meta charset="UTF-8"> </head> <body> <h1>受信ページ</h1> <p>あなたは<?php echo $name;?>さんです。</p> <p>あなたの趣味は<?php echo $hobby;?>です。</p> </body> </html>
こちらは $_GET[name属性の値] で受け取ります。
実行、確認
POSTの場合と同じ方法で、ブラウザで以下を実行してください。
http://localhost/sample_get_send.html
POSTの場合と同じ動作であることを確認してください。
POSTとGETの違い
ではPOSTリクエストとGETリクエストの違いは何でしょうか?
最初に書いたように、POSTはBodyに含めてリクエストを行うもので、GETはURLに付加してリクエストを行うものです。
一般には、以下のように使い分けされています。
POST: 情報を登録する場合(例:ユーザー登録、掲示板への投稿)
GET: 情報を取得する場合(例:検索)
課題1
例題のPOSTとGETのコードに対して、既存の「名前」「趣味」の項目に、「特技」の項目も加えて、それぞれ正しく動作するように修正してください。
課題2
課題1の結果に加えて、「性別」(男、女)、「血液型」(A型、B型、O型、AB型)を選択する項目も加えて、それぞれ正しく動作するように修正してください。