あーる学習帳

自分が勉強したことや気になることなど、99%自分用です。コードを書いてるのでPCから閲覧を推奨。

PHP実習:POSTとGET

今日も続きをやっていきます。仕事疲れた。

ちなみに、昨日までのMySQLの話でこの教材が半分終わったことになります。

 

第8章ー01

今までは別のページへデータを渡す方法としてPOSTを使っていたが、今回はGETについて学んでいく。取り急ぎhtmlでファイルを一つ作成。

<html>
 <head>
  <meta charset="utf-8">
 </head>
 <body>
  <h1>GETでデータを送信する</h1>
  <p>お名前を入力してください</p>
  <form action="get_receive.php" method="GET">
   <label>お名前</label>
   <input type="text" name="name">
   <label>趣味</label>
   <input type="text" name="hobby">
   <input type="submit" value="送信する">
  </form>
 </body>
</html> 

f:id:R_de_aru:20180627200417p:plain

どんなもんだい。次のページへのデータの受け渡し方法として、methodでGETを指定する。続いて、この次のページとなる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>

 POSTのときと同じように、スーパーグローバル変数である$_GETができているので、それを使ってデータを取得する。書き方はPOSTのときと同じ。

実際にこのページへデータを送信してみると…

f:id:R_de_aru:20180627200856p:plain

ちゃんとデータが送信されていることが分かるが、URL欄に着目すると先ほど入力した内容が「?name=あーる&hobby=プログラミング」と出ていることが分かる。試しに、入力欄に何も入れずに「送信する」ボタンを押すと…

f:id:R_de_aru:20180627201134p:plain

名前に「R」、趣味に「映画」と入れると…

f:id:R_de_aru:20180627201247p:plain

以上のテストで、入力内容に応じてURL欄の内容が変わることが分かる。このように、URLを通じてのデータ送信GETという。

 

第8章-02

これを機にいろいろなフォームの部品を使ってみる。

<html>
 <head>
  <meta charset="utf-8">
 </head>
 <body>
  <h1>POSTでデータを送信する</h1>
  <p>プロフィールを登録しよう</p>
  <form action="post_receive.php" method="POST">
   <p>名前:<input type="text" name="name"></p>
   <p>性別:
    <input type="radio" name="sex" value="1">男
    <input type="radio" name="sex" value="2">女
   </p>
   <p>血液型
    <select name="blood">
     <option value="A">A型</option>
     <option value="B">B型</option>
     <option value="O">O型</option>
     <option value="AB">AB型</option>
    </select>
   </p>
   <p>ひとこと:<br>
    <textarea name="comment" rows="4" cols="40"></textarea>
   </p>
   <p><input type="submit" value="送信"></p>
  </form>
 </body>
</html> 

 

f:id:R_de_aru:20180627230120p:plain

次に、データの受信ページを作る。とりあえずvar_dumpで受け取った$_POSTを確認する。

<?php
 var_dump($_POST); //POST全体の中身を確認
 $name=$_POST['name'];
 $sex=$_POST['sex'];
 $blood=$_POST['blood'];
 $comment=$_POST['comment']; 

 このように入力して送信すると…

f:id:R_de_aru:20180627230530p:plain

こうなる。

f:id:R_de_aru:20180627230555p:plain

これを基にしてHTML部分を作成する。

<?php
 $name=$_POST['name'];
 $sex=$_POST['sex'];
 $blood=$_POST['blood'];
 $comment=$_POST['comment'];
?>
<html>
 <head>
  <meta charset="utf-8">
  <title>POST受信ページ</title>
 </head>
<body>
 <h1>受信ページ</h1>
 <p>あなたの名前は<?php echo $name;?>さんです。</p>
 <p>性別は
  <?php if ($sex==="1") {
   echo '男性';
  }else{
   echo '女性';
  }?>
  です。</p>
  <p>血液型は<?php echo $blood; ?>型です。</p>
  <p>
   <?php echo n12br($comment); ?>
  </p>
 </body>
</html> 

 

f:id:R_de_aru:20180627231550p:plain

このように表示される。

なお、<textarea>に入力されたデータが改行を含む場合、改行を表す「\n」が入力されている。HTMLで出力するときにはこれを<br>に置き換える必要があり、n12brという関数は\nを<br>に変換するものである。

 

第8章-03

GETとPOSTの違いについてまとめる。

GET

・データの呼び方...クエリ情報

・データの渡し方...URLから送信。「キー名=値」を付加し、フォームからの送信も可。

・データの受け取り方...$_GET['キー名']

・送信できるデータ量...ブラウザによってサイズ制限がある(例:IE=2048バイト) 。最新バージョンのものでは無制限の場合もある。

・使用例...ブログのライタープロフィールページや記事など、データベースと連動してリンクが必要になる場合。

POST

・データの呼び方...ポストデータ

・データの渡し方...フォームから「name="キー名"」を指定して送信。URLには表示されない。

・データの受け取り方...$_POST['キー名']

・送信できるデータ量...事実上制限なし

・使用例...会員登録やお問い合わせなどのフォームからの送信データを取得する場合

GETではURLからデータが渡せるので、ブックマークしておくことができる、リンクができるという利点がある。 

POSTによるデータ送信はデータ量が無制限なので、それ以外のケースすべてに使えるといえる。しかし、URLに表示されない=安全というわけではない。送信中に部外者からデータを覗かれないようにするには暗号化通信であるSSLを利用する。SSLを利用するとURLの最初が「https://~」となり、安全性の証明にもなる。

 

今夜はここまで、明日は画像データの送信と第8章の実習。

 

==========

 

近日中に各記事のタイトルを変更予定。今のままでは書いている本人も何がどこにあるかわからない。