🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

2回答

1265閲覧

POSTで受け取り、表示するプログラムの処理の順番

turtle410

総合スコア13

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

3クリップ

投稿2021/01/05 08:36

PHP

1 2<?php 3$my_name = ''; 4$gender = ''; 5$mail = ''; 6if (isset($_POST['my_name']) === TRUE && mb_strlen ($_POST['my_name']) > 0) { 7 $my_name = htmlspecialchars($_POST['my_name'], ENT_QUOTES, 'UTF-8'); 8} 9if (isset($_POST['gender']) === TRUE) { 10 $gender = htmlspecialchars($_POST['gender'], ENT_QUOTES, 'UTF-8'); 11} 12if (isset($_POST['mail']) === TRUE) { 13 $mail = htmlspecialchars($_POST['mail'], ENT_QUOTES, 'UTF-8'); 14} 15?> 16 17<!DOCTYPE HTML> 18<html lang="ja"> 19 <head> 20 <meta charset="UTF-8"> 21 <title>テキストボックス、ラジオボタン、チェックボックスをHTMLで作成して、ユーザが選択した値をPOSTで受け取り、表示するプログラム</title> 22 </head> 23 <body> 24 <?php if (mb_strlen ($my_name) > 0) { ?> 25 <p>入力した名前: <?php print $my_name; ?></p> 26 <?php } ?> 27 <?php if ($gender === 'MAN' || $gender === 'WOMAN') { ?> 28 <p>選択した性別: <?php print $gender; ?></p> 29 <?php } ?> 30 <?php if ($mail === 'OK') { ?> 31 <p>メールを受け取るかを表示: <?php print $mail; ?></p> 32 <?php } ?> 33 <form method="post"> <!--(引き渡す処理)を書いてさらにラジオボタンや送信ボタンを書けば完成--> 34 <p><label>お名前: <input type="text" name="my_name"></label></p> 35 <p>性別: <label><input type="radio" name="gender" value="MAN"></label> 36 <label><input type="radio" name="gender" value="WOMAN"></label></p> 37 <label><input type="checkbox" name="mail" value="OK">お知らせメールを受け取る</label> 38 <p><input type="submit" value="送信"></p> 39 </form> 40 </body> 41</html> 42### 前提・実現したいこと 43テキストボックス、ラジオボタン、チェックボックスをHTMLで作成して、ユーザーが選択した値をPOSTで受け取り、表示する以下のプログラムの処理が進行する順番がわかりません。どのような順番で進むのかを教えてください。単純に上から順に処理されるのでしょうか? 44 45 46### 該当のソースコード 47 48```ここに言語名を入力 49ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2021/01/05 08:42

質問内容がありません
退会済みユーザー

退会済みユーザー

2021/01/05 09:01

質問用テンプレートを無視して雑な質問投稿されても、ねぇ。自分のパソコンにでもテスト環境を作るとか、あるいはpaiza.ioなどオンライン実行環境とか使えばコードを実行することはできるわけで。
turtle410

2021/01/05 09:05

テキストボックス、ラジオボタン、チェックボックスをHTMLで作成して、ユーザーが選択した値をPOSTで受け取り、表示する以下のプログラムの処理が進行する順番がわかりません。どのような順番で進むのかを教えてください。単純に上から順に処理されるのでしょうか?
退会済みユーザー

退会済みユーザー

2021/01/05 09:08

一つのphpファイルだけで処理しないといけないのですか? フォームを表示するHTMLファイル、フォーム送信データを受信して処理するphpファイルに分割したら、理解が進むと思うのですが。
javahack

2021/01/06 11:19

m6uさんが示唆されていますが、1つのファイルに入っていますがPHPはサーバ、HTMLはクライアントと動作する場所が違うことは理解されていますか?
退会済みユーザー

退会済みユーザー

2021/02/22 07:13

わからないところを質問者自身の言葉で説明を加えて、解決につながるようにしていただけませんか。
guest

回答2

0

どのような順番で進むのかを教えてください。単純に上から順に処理されるのでしょうか?

説明のために、より簡素なコードをご提示します。

まずPHPとして処理されます。処理は上から順に処理されます。

php

1<?php 2$my_name = filter_input(INPUT_POST, 'my_name'); 3?> 4<p>Hello <?php echo $my_name; ?></p>

PHPは処理結果として、HTML文書を出力します

html

1<p>Hello Alice</p>

ブラウザはHTML文書を読み込み、描画します。文書は上から順に読み込まれます。

投稿2021/01/05 09:06

thyda.eiqau

総合スコア2982

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

turtle410

2021/01/06 09:06

ありがとうございます。 HTMLのform内の名前や性別を入力・選択して 送信ボタンを押した後に上から順に進むと いうことでしょうか?
thyda.eiqau

2021/01/06 18:18

Takumibooさんからもコメントがあります通り、フォームを送信したかどうかにかかわらず上から順に処理されます。 GETでアクセスされたときは$_POSTの中身は空になり、POSTでアクセスされたときは$_POSTの中になんらかの値が入りますので、条件分岐を適切に実装することで処理の結果を変えることはできます。
guest

0

単純に上から順に実行されます。
ただしこのプログラムは条件分岐が含まれているので、その時の状況によって挙動が異なります。

前提として、<?php?>に挟まれた部分はPHPのプログラムとして処理され、それ以外の部分はそのままブラウザに出力されます。

PHP

1<?php 2$my_name = ''; 3$gender = ''; 4$mail = ''; 5if (isset($_POST['my_name']) === TRUE && mb_strlen ($_POST['my_name']) > 0) { 6 $my_name = htmlspecialchars($_POST['my_name'], ENT_QUOTES, 'UTF-8'); 7} 8if (isset($_POST['gender']) === TRUE) { 9 $gender = htmlspecialchars($_POST['gender'], ENT_QUOTES, 'UTF-8'); 10} 11if (isset($_POST['mail']) === TRUE) { 12 $mail = htmlspecialchars($_POST['mail'], ENT_QUOTES, 'UTF-8'); 13} 14?>

ここまででそれぞれの変数が初期化されています。
またそれぞれのif文により、$_POST['my_name']などがセットされている場合(=ページがPOSTにより読み込まれ、適切に値が送信されている場合)にはその値がセットされます。

PHP

1 <?php if (mb_strlen ($my_name) > 0) { ?> 2 <p>入力した名前: <?php print $my_name; ?></p> 3 <?php } ?> 4 <?php if ($gender === 'MAN' || $gender === 'WOMAN') { ?> 5 <p>選択した性別: <?php print $gender; ?></p> 6 <?php } ?> 7 <?php if ($mail === 'OK') { ?> 8 <p>メールを受け取るかを表示: <?php print $mail; ?></p> 9 <?php } ?>

この部分では$my_nameや$genderなどがセットされているかどうかをifで判別し、セットされている場合にはその値をprintで出力しています。

動作の条件分岐としては、

  1. 初めてページを開いた場合
  2. 送信ボタンが押されたが何も入力されていない場合
  3. 何かを入力して送信ボタンが押された場合

になると思います。1・2はほぼ同じで、$_POST['my_name']等がセットされていない状況、3はそれらがセットされているので、「入力した名前」などとして表示がされます。

投稿2021/01/05 09:29

Takumiboo

総合スコア2536

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

turtle410

2021/01/06 07:30

ありがとうございます。 HTMLのform内の名前や性別を入力、選択してから上から順に進むということでしょうか?
Takumiboo

2021/01/06 08:20

フォームに入力しようがしまいが、上から順に進みます。送信ボタンが押されればブラウザがページを再読込することからわかるように、また一から処理が走ります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問