PHP

[PHP入門]$_POSTと$_GETの使い方とその違い

この記事ではPHP初心者向けに「フォームから値を受け取る」方法を解説しています。フォームからの値の受け取り方には2通りあります。「POST」と「GET」です。それぞれ紹介していきます。

POSTとGETの違い

簡単に説明すると、GET=取得する、POST=送信するということです。

GETは取得する動作ですが、場合によっては「どういう値が欲しいのか?」という情報を付与する時があります。この付与された情報を受け取るという行為が、POSTで送信された値を受け取る行為とよく似ているため、初心者はPOSTとGETをよく混合しがちです。

POSTはURL上からは見えない値を送信する

GETはURL上にパラメーターを付与する

POST送信する方法

POST送信した値の取得

POST送信とはHTTPの通信方式の一つです。HTTPで作成されたフォームから入力したデータをサーバーに送信する方法のことを言います。

POSTの使い方

PHP側では、「$_POST」という連想配列にセットされます。

<?php
if($_POST['you']=='saku'){
    $post='さくちゃん!!';
}else{
    $post='あなたはさくちゃんではないよ';
}
?>

 

GET送信する方法

GET送信した値の取得

GET送信は、POST送信と同じくHTTPの通信方式の1つです。URLの後に「?」マークとそれに続く意味不明な英数字がズラズラと並んでいます。この「?」マーク移行がURLパラメーターと呼ばれます。

GETの使い方

PHP側ではURLパラメータを「$_GET」という連想配列にセットされ、「$_POST」と同じように取り出して使うことができます。

<?php
if($_GET['you']=='saku'){
    $get='さくちゃん!!';
}else{
    $get='あなたはさくちゃんではないよ';
}
?>

POSTの特徴

POSTは主に値の送信に用います。長いデータの送信に向いております。その他の特徴は以下を参考にしてください。

パラメーターが見にくい

デベロッパーツールなどを使えば見ることも可能ですが、"わざわざ調べる"ということをしない限りPOSTで送られたパラメーターは見えません。

文字数制限がない

パラメーターの送信にはURLを使用しないので基本的に文字数を気にせず送信することができます。ただし、サーバーやプログラムの設定で長さをこちらで調節することは可能です。

GETの特徴

GETは主に値の取得に用います。長いデータの送信には向きませんし、他人に見られたくない情報は載せないほうが良いでしょう。その他の特徴はこちらです。

URLにパラメータが付加される

GETでリクエストを送ると、どのパラメータのキーと値がURLに付与されます。

文字数制限がある

GETはURLにパラメーターを付与して送信するため、サーバーやブラウザの設定によって使える文字数に制限があります。

文字数が最も少ないのはおそらくIEで、最大で2048文字までしか使えません。

POSTとGETの使い分け~具体例~

POSTは情報を登録する時、GETは情報を取得するときに使用するのが適しています。

検索フォーム GET
ログインフォーム POST
メールフォーム POST
ページャー GET
スケジュール登録 POST
カレンダー登録 GET

検索エンジンからの流入を期待するページでは、GETメソッドにより表示させる必要があります。

逆にログインフォームやメールフォームなどのURLからプライベートな情報が読み取れてしまうのは好ましくないのでこのような場合ではPOSTメソッドを使用します。

まとめ

今回はPOSTとGETの違いについて解説しました。

こちらの記事の解説を見てもわからなかった場合は、こちらを参考にしてみたらどうでしょうか?