画面間のデータ受け渡し(POST, GET)

(ブログ記事の一覧は「こちら」)

本コースは、Webアプリの制作を行うために必要な基本的な内容について、実際に作成しながら学んでいきます。
主に、PHPのプログラミングの基本について説明していきます。

ここで学ぶこと

まずは準備として、PHPのプログラミングの実行方法について確認していきます。
基本的な内容が確認できたら、PHPの重要な基本機能として、 画面間のデータ受け渡しについて確認していきます。

準備

PHPのプログラミングの実行方法について確認していきます。

まず「XAMPP」を起動してください。

f:id:MJeeeey:20190903024651p:plain

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でデータを送信するときのリクエストの方法です。
つまり、データを送信するときに、サーバへのリクエストを行う必要がありますが、そのときの方法に違いがあります。

  • POST: Bodyに含めてリクエストを行う
  • GET: URLに付加してリクエストを行う

作成するもの

  • 画面間のデータ受け渡し(POSTリクエスト)
  • 画面間のデータ受け渡し(GETリクエスト)

いずれも、送信側の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型)を選択する項目も加えて、それぞれ正しく動作するように修正してください。