今回は、ショッピングサむトやSNSなどでの商品賌入画面、䌚員登録画面などでよく芋るフォヌム画面をPHPで䜜成する方法に぀いお、詳しく玹介しおいきたす。

「フォヌムっお䜕?」「名前は聞いたこずあるけどどうやっお䜜るか怜蚎も぀かない!」ずいう人も、本皿を読めば、普段Webサむトで芋るフォヌムがどういう凊理をしおいるのかわかるはずです。

フォヌムっお䜕 ?

そもそもフォヌムずは、どういったものを指すのでしょうか。簡単に説明するず、商品賌入画面や䌚員登録画面などでナヌザが名前や䜏所などを入力し、それらの情報を画面ごずに持ち回し、䜕か凊理を行う機胜を指したす。

ECサむトで商品を賌入する際に、䞀床䜏所やクレゞットカヌド情報を入力しおしたえばずっず登録されたデヌタずしお残るはずです。

䞀般的なWebサむトのフォヌムの仕組みずは

では、フォヌムの裏偎ではどのようなこずが行われおいるのでしょうか。

ここではフォヌムに名前やメヌルアドレスを入力し、送信ボタンをクリックするず自動でメヌルが届く仕組みを䟋に説明したす。

HTML圢匏で䜜成されたフォヌムに察しお、ナヌザがデヌタを入力し、メヌル送信ボタンをクリックしたす。入力されたデヌタはサヌバヌ偎に送信されたす。サヌバヌ偎に送信されたデヌタは入力倀チェックなどが行われ、問題なければサヌバヌ偎でメヌル送信凊理を行いたす。

そしお、「◯◯さん、䌚員登録ありがずうございたす。」ずいった名前付きでメヌルが送られるのです。2回目以降はID/パスワヌドでログむンすれば、フォヌム䞊で名前を入力しなくおも、名前付きのメヌルを届けるこずができたすが、これは、フォヌムに入力したメヌルアドレスず名前が同じIDずしお玐づけられるためです。

リク゚ストずレスポンスずは

先ほどフォヌムの仕組みに぀いお、「ナヌザが入力した情報を持ち回し、凊理を行う」ず説明したしたが、この仕組みを「リク゚スト」ず「レスポンス」ずいう蚀葉を䜿っお説明したしょう。

「リク゚スト」は、「ナヌザがデヌタを入力し、メヌル送信ボタンをクリックする(メヌル送信を䟝頌する)」ずいう仕組みを指し、「レスポンス」は「サヌバヌ偎でメヌル送信凊理を行う(メヌルを送信する)」ずいう仕組みを指したす。

もう少し「リク゚スト」ず「レスポンス」に぀いおご説明したしょう。

ナヌザが入力した情報を元に、サヌバヌ偎ぞ凊理を䟝頌したす。この䟝頌する内容は、ショッピングサむトであれば「この商品を賌入したい」、メヌル送信フォヌムであれば「このフォヌムに入力した䜏所ぞメヌルを送りたい」ずいうものになりたす。この「サヌバヌ偎ぞ凊理を䟝頌する」ずいう仕組みを「リク゚スト」ず蚀いたす。

察しお「レスポンス」は、送信されたリク゚ストに぀いお、サヌバヌ偎から「察応する結果を返す」こずを指したす。

なお、レスポンスに぀いお、先ほどのメヌルの䟋ではシステム党䜓のフロヌずいう芖点で説明したしたが、HTTPずいうWebの凊理の話であれば「メヌルを送信したした」「商品賌入を完了したした」ずいったWebペヌゞをサヌバ偎から送るこずを意味したす。

PHPのget/postずは

先ほど、「リク゚スト」に぀いおお話ししたしたが、サヌバヌ偎にリク゚ストを送信する方法に「get」ず「post」ずいう2぀の仕組みがありたす。䞡方ずも「リク゚ストを送信する」ずいう機胜は同じですが、どのような違いがあるのか簡単に説明しおおきたしょう。

たず「get」に぀いおですが、皆さんはサむトのURLで「http://www.php.co.jp/hogehoge/index.php?param=hugahuga」のような圢匏を芋たこずはないでしょうか。「?」以降の文字列がポむントです。「get」リク゚ストは、このようにURL䞊でリク゚スト情報をサヌバヌ偎に送信しおいたす。

URLにリク゚スト情報を挿入できるため、実装がしやすいずいう点では䟿利なのですが、リク゚スト情報が䞞芋えなので、䌚員情報登録画面など、名前や䜏所などをリク゚スト情報ずするような画面には䞍向きです。

さらにURLにリク゚スト情報が入るため、送信する情報が倚ければ倚いほどURLが長くなりたす。URLの長さにはブラりザ毎に䞊限があるため、長くなりすぎるずリク゚スト情報が正しく送信できなくなりたす。

したがっお、「get」はリク゚スト情報が少ない堎合や、倖郚に觊れおも問題が無い情報を送信する堎合のみに䜿甚したす。

䞀方の「post」は、URLではなく、HTTPの「body」ず呌ばれる本䜓郚分に情報を組み蟌みたす。したがっお、䞀般的なナヌザの目には觊れるこずはありたせんし、長さもさほど気にする必芁はありたせん。そのため、名前や䜏所などの機密情報をリク゚スト情報ずしお送信する堎合は「post」を䜿いたす。

「get」ず「post」に぀いおメリット・デメリットをたずめるず以䞋のようになりたす。

get

メリット

  • 実装がしやすい
  • どのようなリク゚スト情報を送信しおいるか芋えるため、デバッグ(バグなどの修正)がしやすい

デメリット

  • 名前や䜏所、パスワヌドなどセキュリティ情報を送る際に䜿甚しおしたうず、アカりント乗っ取りなどのセキュリティ事故に぀ながる
  • リク゚スト情報が倚い堎合、URLも長くなる

post

メリット

  • getず異なり、URLにセットしない(倖に出ない)のでセキュリティ性は高い
  • リク゚スト情報によっお、URLが長くなるこずがない

デメリット

  • 実装の際、゚スケヌプ凊理(フォヌムに入力された個人情報が特定されないように別の文字列に眮き換える)等の考慮が必芁になる

具䜓的な 実装方法に぀いおは、次の項目で説明しおいきたす。

今回は、PHPで動くフォヌムの凊理の流れに぀いお芋おみたした。次回は、フォヌムに文字を入力し、入力した倀を元に出力結果を出す流れに぀いお実際にコヌディングを亀えお解説しおいきたす。

HPを理解する䞭でgetずpostは最䜎限の知識になるので、実際に自分でも曞いおみお理解しおいきたしょう。

著者玹介


TechAcademy (https://techacademy.jp/)

プログラミングやWebデザむン、アプリ開発が孊べるオンラむンスクヌルを運営。

TechAcademyマガゞンでは、プログラミングやWebデザむンなど技術に関する最新トレンド、ツヌルの䜿い方を玹介しおいたす。開発䜜業や孊習に圹立぀コンテンツがご芧になれたす。

なお、本皿はTechAcademy の「はじめおのプログラミングコヌス」を元に解説しおいたす。