【PHP】フォームからGETとPOSTでデータを受け渡しする方法

・PHPでデータの受け渡し方法がわからない・・・。
・GETやPOSTって一体何?
・また、GETとPOSTをどう使い分ければいいの?

PHPでは、HTMLのフォームから入力したデータを受け渡しすることができますが、やり方がわからない人も多いでしょう。

そこでこの記事では、PHPでフォームからデータを受け渡しする方法やGETとPOSTの意味と違いについて解説していきます!

この記事を読めば、GETとPOSTの使い方がわかり、HTMLのフォームから入力してデータを受け渡しすることができるでしょう。

PHPでフォームからデータを受け渡ししたいけど、やり方がわからない、GETやPOSTについて詳しく知りたい人は、ぜひ最後までご覧ください。

GETとPOSTの違い

PHPでは、HTMLのフォームからデータを受け渡しすることができます。

そのデータを受け渡しする際に、用いられるリクエスト方法がGETPOSTです。

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

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’]と指定します。

先ほど作成したコードに、以下のコードを付け足してみましょう。

formタグの下に、PHPのコードで$_GET[‘name’]を指定します。

受け取ったデータを出力するために、echoを指定しておきましょう。

結果を更新すると、次のようになります。

フォームの下側に入力したデータが表示されましたね。

この結果から、GETリクエストによって送信されたデータを受け取られているのがわかります。

GETはこのようにしてフォームからデータを受け渡しするので、使い方を覚えておきましょう。

POSTでデータを受け渡しする

続いて、POSTでデータを受け渡しする方法について見ていきましょう。

POSTでデータを受け渡しする場合も、GETのときとコードの書き方は同じです。

先ほど書いたコードで、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の学習に役立つと幸いです。

BLOGコンテンツをパーソナライズします

あなたは現在「プログラミング学習者」ですか?