本日はPHPのGETとPOSTの基本動作ついて解説していきたいと思います。
それではいってみましょう!
Menu
GETとPOSTの違い
GETとPOSTの違いはブラウザのアドレスバーにセットした連想配列のキーと値が表示されるか表示されないかの違いがあります。
使用する際にアドレスバーに表示する場合と表示されては困る時があるので、それぞれ使い分けます。
今回はGETとPOSTの基本動作を確認していきたいと思います。
GET
・GETにセットした情報はブラウザのアドレスバーに表示されます(URLパラメーター)
・スーパーグローバル変数です(スクリプトのどこからでも使用可能な変数)
・中身は連想配列になっています。
・使用する場所はテンプレートなどに使用します。
使用方法
それではどのような仕組みで、値がGET送信によって取得できるかを解説していきたいと思います。
➀値の設定
②値の確認
③値の取得
この順番で解説していきたいと思います。
今回は下記のような2つのPHPファイルを作成します。
【test1.php】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <!DOCTYPE html> <html lang="jn"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>GET</title> </head> <body> <form action="test2.php" method="GET"> <!--➀--> <input type="text" name="test"> <!--➁--> <button type="submit">確認画面へ</button> </form> </body> </html> |
【test2.php】
1 2 3 | <?php echo $_GET['test']; ?> |
それではGETから解説していきたいと思います(*^^)v
➀GETの値の設定
【test1.php】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <!DOCTYPE html> <html lang="jn"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>GET</title> </head> <body> <form action="test2.php" method="GET"> <!--➀--> <input type="text" name="test"> <!--➁--> <button type="submit">確認画面へ</button> </form> </body> </html> |
・ソースコードの➀のaction=”test2.php”でtest2.phpに遷移します。
・ソースコードの➀のmethod=”GET”でGETで値を送信ができます。
・ソースコードの②のname=”test”は連想配列のキーになります
・今回は「こんにちわ!」と値を設定して送信します。(連想配列の値になります。)
それでは次に設定した値がきちんとGETに格納されたかをデバッグして確認してみます(^O^)
➁GETの値の確認
きちんと送信されたかの確認をVSCodeのデバッグ機能でGETの中身を確認してみます。
➀Supergrobalsの中に$_GETがあるのでスーパーグローバル変数ということが確認できます。
②赤枠の$_GETの中身を確認してみるとtest: “こんにちわ!”と表示されて先程設定した値がきちんとセットされ連想配列だということも確認できたかと思います。
③GETの値の取得
【取得の構文】
$_GET[‘連想配列のキー’]
【test2.php】
1 2 3 | <?php echo $_GET['test']; ?> |
実行後はtest1.phpからtest2.phpに画面が遷移して連想配列の値が表示されます。
【URLパラメーター】
GETの場合は上記の赤枠のアドレスの?の後ろにtest=こんにちわ!と表示されています。先程設定したキーと値が表示されます。そしてこれがURLパラメーターという便利なものになります。
例1 URLパラメータなし
https://dailyrecords.blog/
例2 URLパラメータが1個の場合
https://dailyrecords.blog/?p=2541
例3 URLパラメータが複数の場合は&を使用すれば複数パラメータの指定ができます。
https://dailyrecords.blog/?key1=1&key2=animal
上記の例を見ると今回のパターンは例2になります。
例1はURLパラメーターは何も設定されてないパターンです。
例3は&で繋げれば複数のキーと値のセットも可能になります。
こうすることによりアドレスが変わるのでページを何個も作成しなくてもテンプレートを1つ作成し、変更しない箇所だけPHPファイルでインクルードして、あとはコンテンツなどの内容だけDBから取得し、URLパラメーターだけ変更していけば別ページ扱いができるので、こういう点でGETは便利に使用できます。
POST
・POSTにセットした情報はブラウザのアドレスバーに表示されません。
・スーパーグローバル変数です。(スクリプトのどこからでも使用可能な変数)
・中身は連想配列になっています。
・URLパラメーターはありません。
・使用する場所は主にフォームなどです。
使用方法
それではどのような仕組みで値がPOST送信によって取得できるかを解説していきたいと思います。
イメージ的には新規登録のフォーム画面から名前や住所や電話を入力して送信ボタンを押したといったイメージを持って説明をきいてみてください。
それでは解説します(*^^)v
➀値の設定
②値の確認
③値の取得
この順番で解説していきたいと思います。
今回は下記のような2つのPHPファイルを用意します。
【test1.php】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <!DOCTYPE html> <html lang="jn"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>POST</title> </head> <body> <form action="test2.php" method="POST"> <!--➀--> <input type="text" name="test"> <!--➁--> <button type="submit">確認画面へ</button> </form> </body> </html> |
【test2.php】
1 2 3 | <?php echo $_POST['test']; ?> |
それではPOSTに値を設定していきたいと思います。
➀POSTの値の設定
【test1.php】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <!DOCTYPE html> <html lang="jn"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>POST</title> </head> <body> <form action="test2.php" method="POST"> <!--➀--> <input type="text" name="test"> <!--➁--> <button type="submit">確認画面へ</button> </form> </body> </html> |
・ソースコードの➀のaction=”test2.php”でtest2.phpに遷移します。
・ソースコードの➀のmethod=”POST”でPOSTで値を送信ができます。
・ソースコードの②のname=”test”は連想配列のキーになります
・今回は「こんにちわ!」と値を設定して送信します。(連想配列の値になります。)
それでは次に今設定した値がきちんとPOSTに格納されたかをデバッグして確認してみます(^O^)
➁POSTの値の確認
きちんと送信されたかの確認を今回はをVSCodeのデバッグ機能でPOSTの中身を確認します。
➀Supergrobalsの中に$_POSTがあるのでスーパーグローバル変数ということが確認できます。
②赤枠の$_POSTの中身を確認してみるとtest: “こんにちわ!”と表示されて先程設定したキーと値がきちんとセットされ連想配列だということも確認できたかと思います。
③POSTの値の取得
【取得の構文】
$_POST[‘連想配列のキー’]
【test2.php】
1 2 3 | <?php echo $_POST['test']; ?> |
実行後はtest1.phpからtest2.phpに画面が遷移して連想配列の値が表示されます。
データベースにINSERTさせる際にセキュリティの設定や名前や電話などの入力ミスなどをチェックするために今回のように一度test2.phpに遷移して値をチェックするためにこのような手順を踏みます。実際はもう一回セッションで画面を遷移させてからデータベースに値を挿入していくのが通常のやり方だと思います。
そしてPOSTの最大の利点はGETとは違いブラウザのアドレスにセットした内容が表示されないということで個人情報などを送信する際はPOSTを必ず使用します。これをしっかり覚えておきましょう。
まとめ
今回はGETとPOSTの基本的な値の設定から取得までの確認ができたかと思います。
使用する目的は今回習得したGETやPOSTの中身の連想配列を使用してデータベースと連携させて値の挿入や取得をすることが目的になります\(^^)/
以上です。
【PHP】簡易掲示板を作成しリロードによる二重投稿と空白投稿を防止する