【初心者向け】phpでinputタグから入力を受け取る方法

こんにちは。スマホを大きいものに買い替えてよく落としてしまうひろです。

phpでウェブ開発を行っている際に、

入力フォームのデータを受け取りたいけど、どうやってつかえばいいのかわからない……
phpでinputタグってどうやって使うんだろう?

と考えたことはありませんか?
今回は、入力フォームのデータの受け取り方で、基本的な2種類の方法について解説します。

phpでinputタグから受け取る場合は2種類の方法がある

inputタグに入力されたデータは、

GETによる取得方法
POSTによる取得方法

の2つがあります。それぞれ特徴がありますので、見ていきましょう。

情報を受け取る方法はmethod属性で指定できる

まずはこちらを見てください。

 

このような入力フォームを作っていきます。(CSSは省略します)以下はこのような入力フォームを作る際の一例です。

まず、入力フォームを作る際は、formタグで「ここが入力フォームですよ」とhtmlに示してあげる必要があります。ここで注目してほしいのが、

action属性method属性です。

action属性は、この入力フォームのデータをどのページに送信するか、ということを指定できる属性です。今回はreceive.phpに指定されているので、receive.phpに送信します。method属性は、「どの方法で送るか」を指定できる属性で、この属性でGETかPOSTかを選択できます。ぜひ、上のコードで入力と送信をしてみてください。

GETの特徴

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

先程のサンプルコードではGETでデータを扱いましたが、送信ボタンを押した際にURLに

という文字列が末尾に追加されたと思います。(***は入力したデータ)

これはGETでのデータの取扱い上の大きな特徴の一つで、URLの末尾にname属性で指定したinputタグのデータが入ります。

大きなデータの送信には向かない

このURL以下の文字列の長さには限度があり、あまりにも長いとエラーを吐いてしまうので、ページ数などの数値などを扱う場合にGETを使うのが一般的です。

他人に見られたくない情報は載せないほうが良い

URLに表示されてしまう関係上、パスワードなど他人に見せられない情報はGETではなくPOSTで扱うようにしましょう。

テキストデータのみ扱うことができる

URLにデータを乗せるので、画像などのファイルを送信することはできません。画像や動画、音声などのファイルを扱う場合は次に紹介するPOSTを使いましょう。

POSTの特徴

URLからは見えないデータを送信する

POSTでデータを扱う場合、URLは変化しません。先程のサンプルコードのmethod属性をpostにするとPOSTになるので、是非自分でも動かしてみてください。

大きなデータの送信ができる

こちらはGETと違い、長大な文字列なども扱うことができます。

他人に見られたくない情報(パスワードなど)を扱う場合に向いている

URLにデータが表示されないので、他人に見られたくない情報はGETではなくPOSTで扱うのが一般的です。

POSTを使っていても、盗聴などでデータの漏洩の可能性があります。暗号化など対策をしない場合、完全に安全というわけではないので、注意しましょう。

テキストデータ以外も送信できる

ファイル形式のデータも扱うことができます。画像を扱う場合などはPOSTを使うようにしましょう。

データの受け取り方法は連想配列形式で受け取る

受け取り方はどちらの方法でもあまり変わりません。

このように、$_GETや$_POSTというPHP側であらかじめ用意されている変数に自動的に情報が格納されており、ここからデータを取り出すことができます。扱いやすいように、別の変数に入れ直すのが一般的な扱い方になります。

phpのinputタグでデータを扱う場合、どちらを使うべきか?

まだ現場に入ったことがなかったり、まだ開発経験がなく、これから作っていく場合はどちらを使うべきなのかすごく迷いますよね……。実はこれは、現場によって変わってきますが「こういう場合はこっちを使うのが一般的だよね」という考え方があります。それらを見ていきましょう。

検索やページ数などはGET

このURLに入力データが表示されるという特性を生かして、「ブックマークされたとき」に便利なものがGETになることが多いです。例えば、検索結果などを表示する場合、そのページをブックマークしておくと、次回からブックマークでページに飛んだ際に便利な使い方になります。

Googleなどに代表される、検索エンジンの検索結果もGETを使用しており、例えば「ウェブカツ」と検索した際のURLが以下のURLになります。

https://www.google.com/search?q=%E3%82%A6%E3%82%A7%E3%83%96%E3%82%AB%E3%83%84&oq=%E3%82%A6%E3%82%A7%E3%83%96%E3%82%AB%E3%83%84&aqs=chrome.0.69i59j35i39j0i395l2j69i61l3j69i65.3265j1j7&sourceid=chrome&ie=UTF-8

?以下に入力した文字が含まれています。この場合は別の文字に置き換えているので、ぱっと見た際に何が検索されているのかわからないようになっています。

このように、ブックマークした際に入力データを保持できる場合、よくGETが使われます。

パスワードなど個人情報などはPOST

特徴でも紹介したとおり、GETはURLに表示され、POSTはURLに表示されないという特徴があります。この特徴により、ログイン画面などはPOSTを使うのが一般的です。

実は、基本的にはPOSTを使い、「GETを使うほうが良い」と判断された場合はGETを使う、という現場が今は多いので、もしもGETとPOSTでどちらを使うべきかわからない場合、POSTを使っておくほうが良いです。

まとめ

いかがでしたか?今回は、

phpでinputタグから入力を受け取る方法

について解説しました。phpでログイン機能などを作る際には必ず必要となってきますので、ぜひ参考にしてみてくださいね。

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

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