・GETやPOSTって一体何?
・また、GETとPOSTをどう使い分ければいいの?
PHPでは、HTMLのフォームから入力したデータを受け渡しすることができますが、やり方がわからない人も多いでしょう。
そこでこの記事では、PHPでフォームからデータを受け渡しする方法やGETとPOSTの意味と違いについて解説していきます!
この記事を読めば、GETとPOSTの使い方がわかり、HTMLのフォームから入力してデータを受け渡しすることができるでしょう。
PHPでフォームからデータを受け渡ししたいけど、やり方がわからない、GETやPOSTについて詳しく知りたい人は、ぜひ最後までご覧ください。
目次
GETとPOSTの違い
PHPでは、HTMLのフォームからデータを受け渡しすることができます。
そのデータを受け渡しする際に、用いられるリクエスト方法がGETとPOSTです。
GETとPOSTにはどのような違いがあるのでしょうか?
- ・GET:データがURLによって引き渡される
- ・POST:データがURLによって引き渡されない
データを送信する際、GETはデータをURLで引き渡されるのに対し、POSTはURLで引き渡されないという特徴があります。
URLでデータを渡した場合、URLの部分に入力したデータが表示されます。
例えば、Googleで何かを検索したときを考えてみましょう。
検索窓に「php」と入力して、検索ボタンを押します。
すると、検索結果の一覧が表示されると思いますが、画面上部にあるURLの部分を見てみてください。
「google.com/search」と書かれた後に、「?q=php・・・」と書かれていますね。
これは、検索したデータをURLによって送信されたということです。
つまり、このGoogleで何かを検索する際のデータの受け渡しは、GETによるリクエスト方法で行われているということになります。
次の項目では、実際にフォームを作成して、GETやPOSTでデータを受け渡ししてみましょう。
フォームからデータを受け渡ししてみよう
ここからは、実際にフォームを作成してデータの受け渡しをする方法について解説していきます。
GETとPOSTの働きも意識して学んでいきましょう。
HTMLでフォームを作成する
まずは、HTMLでフォームを作成していきます。
PHPのファイル「index.php」を作成しましょう。(ファイル名はなんでも構いません)
■index.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<!DOCTYPE html> <html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <title>サンプルページ</title> </head> <body> <h1>フォーム</h1> <form action="index.php" method="get"> 名前:<input type="text" name="name"><br> <input type="submit" value="送信"> </form> </body> </html> |
formタグのaction属性は、データの送信先を指定する場所です。
今回は、データの送信先を同じファイル内に指定するため、「index.php」と指定しておきます。
そして、method属性には、データを送信する方法を指定します。
ここは「get」もしくは「post」を指定しますが、まずは「get」を指定しておきましょう。
formタグの中身は簡単な入力欄を作ります。
名前を入力するためのinputタグでは、name属性を「name」としておきます。(name属性は入力したデータを受け取る際に必要になります)
あとは送信ボタンのinputタグを作っておきましょう。
これでHTMLでのフォームの作成は完了です。
次は、実際にGETやPOSTを使ってデータの受け渡しをしていきましょう。
GETでデータを受け渡しする
GETでデータを受け渡しする方法です。
まず、先ほど作成したフォームで名前を入力し、送信ボタンを押してみましょう。
すると、URLの部分に入力したデータが表示されるはずです。
URLの部分に「?name=入力したデータ」と表示されれば、GETリクエストできちんとデータが送信されています。
しかし、この状態はデータを送信しただけなので、そのデータを受け取ることが必要です。
データを受け取る際は、$_GET[‘name属性の名前’]と指定することでデータを受け取ることができます。
例えば、今回の例だと、入力欄のname属性は「name」という名前にしていたので、そのデータを受け取るには、$_GET[‘name’]と指定します。
先ほど作成したコードに、以下のコードを付け足してみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<!DOCTYPE html> <html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <title>サンプルページ</title> </head> <body> <h1>フォーム</h1> <form action="index.php" method="get"> 名前:<input type="text" name="name"><br> <input type="submit" value="送信"> </form> <!-- データを受け取る --> <?php echo $_GET['name']; ?> </body> </html> |
formタグの下に、PHPのコードで$_GET[‘name’]を指定します。
受け取ったデータを出力するために、echoを指定しておきましょう。
結果を更新すると、次のようになります。
フォームの下側に入力したデータが表示されましたね。
この結果から、GETリクエストによって送信されたデータを受け取られているのがわかります。
GETはこのようにしてフォームからデータを受け渡しするので、使い方を覚えておきましょう。
POSTでデータを受け渡しする
続いて、POSTでデータを受け渡しする方法について見ていきましょう。
POSTでデータを受け渡しする場合も、GETのときとコードの書き方は同じです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<!DOCTYPE html> <html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <title>サンプルページ</title> </head> <body> <h1>フォーム</h1> <form action="index.php" method="post"> 名前:<input type="text" name="name"><br> <input type="submit" value="送信"> </form> <!-- データを受け取る --> <?php echo $_POST['name']; ?> </body> </html> |
先ほど書いたコードで、formのmethod属性の部分を「get」から「post」に変えて、$_GETの部分を$_POSTに変えてみましょう。
結果を更新して、ブラウザを表示してみると、次のようになります。
GETの時と同じように、入力したデータがフォームの下側に表示されました。
しかし、URLの部分を見てみましょう。
GETのときは、「?name=入力したデータ」というようにデータが表示されていましたが、今回は何も表示されていません。
この結果から、POSTはURLでデータが引き渡されていないのがわかります。
URLにデータが表示されない分、セキュリティを考えた上ではGETよりPOSTの方が安全性は高いと言えますね。
GETとPOSTの使い分け方
ここまでで、GETとPOSTの意味や違い、使い方などがわかりました。
では、このGETとPOSTはどのように使い分ければいいのでしょうか?
まずGETは、身近なところで言えば、検索機能に使われることが多いです。
例えば、GoogleやYahooの検索エンジン、サイト内の検索欄などにあたります。
この検索機能では、サーバー側に何のキーワードで検索したかを送信する必要があります。
その際に、GETを使ってURLの後に検索したデータを付与してサーバー側に送ることができます。
一方で、POSTはどのようなときに使われるのかというと、お問い合わせフォームやログインなどの機能です。
お問い合わせフォームやログインなどは、名前やメールアドレス、パスワードなど、他人に見られてはいけない個人情報を入力します。
データのリクエスト方法がGETのままだと、入力した個人情報がURLに表示されて、丸見えの状態になってしまいます。
なので、そのような個人情報を扱う機能の場合は、POSTを使うのが望ましいということです。
検索機能を実装する場合やデータを他の人と共有する場合はGETを使い、お問い合わせフォームやログイン機能などを実装する場合はPOSTを使う、というように使い分けるといいでしょう。
また、POSTはGETよりも安全性が高いと思われますが、完璧に安全とは言い切れません。
データを入力する際や送信する際はセキュリティがまだまだ甘いので、きちんとしたセキュリティ対策が必要になります。
PHPでのセキュリティ対策について、詳しく知りたい人は以下の記事をご覧ください。
PHP初心者に知ってほしいCSRF脆弱性とその対策まとめ
今回は、PHPでフォームからデータを受け渡しする方法について解説しました。
データを受け渡しするには、GETやPOSTなどを使って実装することができます。
GETやPOSTはデータを受け渡しするためのリクエスト方法で、URLによってデータを受け渡すのがGET、そうでないのがPOSTになります。
URLでデータを誰かと共有したい場合はGETを使うのが適していますが、お問い合わせやログインなどの個人情報を扱う場合はPOSTを使うのが適しているでしょう。
それぞれの場面で、GETとPOSTのどちらを使うべきか、しっかりと考えて使用するようにしましょう。
この記事がPHPの学習に役立つと幸いです。