質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.46%
POST

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

PHP

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

Q&A

解決済

3回答

1503閲覧

PHPで同じページにPOSTするのはどういうときでしょうか?

March03

総合スコア47

POST

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

PHP

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

0グッド

2クリップ

投稿2021/09/20 12:10

概要

PHP初学者です。
ページに切り分け方について疑問があります。

疑問

現在下記サイトを参考にお問い合わせフォームの作成方法を勉強しています。
GRAY CODE お問い合わせフォームを作る

このサイトではお問い合わせフォームを以下の3ページで構成しています。

  • 入力ページ
  • 確認ページ
  • 完了ページ

このような場合、私の頭の中では画面ごとにphpファイル作成する、つまり計3つのphpファイルを作成するのかな?とイメージしました。
しかし、実際に解説を読んでいくとphpファイルは1つで、同じページにPOSTしています。
POSTされたデータを見て条件分岐し、表示する内容を切り替えていました。
このサイトの作成方法が必ずしも正解ということはないと思いますが、このような場合は3つのファイルに分けずに1つのファイルにまとめるべきでしょうか。
また、どのようなときにファイルを分けるできでしょうか。

【補足】私の考え

内容がほぼ同じページのとき、つまりコードをコピペする必要が出てきたときは1つのファイルにまとめて、可変部分だけを条件分岐すればいいのではないかと考えています。今回のサイトの解説ではコードをごっそり分岐させておりこのケースには当てはまっていないように感じるため1つのファイルにまとめているのが無理矢理感があって違和感があります。
特に「入力ページ」と「確認ページ」はまだしも、「完了ページ」は見た目も役割も全然違うものに感じるので別ファイルに分けた方が可読性も上がるのでは?と感じます。

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

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

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

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

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

guest

回答3

0

ベストアンサー

このサイトの作成方法が必ずしも正解ということはないと思いますが、このような場合は3つのファイルに分けずに1つのファイルにまとめるべきでしょうか。
また、どのようなときにファイルを分けるできでしょうか。

正直なところ、何でも良いです。
可読性や共通箇所の定義はファイル単位でどうにかするよりは全体の設計、テンプレートエンジンやクラス、定数等によって定義するべき性質の要素です。
ファイルを分けるかどうかと言うのはそれらの前提を満たした上での好みの問題になります。

学習中の考え方という観点では、メリットを感じる方法で実際に書いてみるのが一番良いです。
そういった意味では、

内容がほぼ同じページのとき、つまりコードをコピペする必要が出てきたときは1つのファイルにまとめて、可変部分だけを条件分岐すればいいのではないかと考えています。今回のサイトの解説ではコードをごっそり分岐させておりこのケースには当てはまっていないように感じるため1つのファイルにまとめているのが無理矢理感があって違和感があります。
特に「入力ページ」と「確認ページ」はまだしも、「完了ページ」は見た目も役割も全然違うものに感じるので別ファイルに分けた方が可読性も上がるのでは?と感じます。

と感じられているのはとても正しくて、同じ仕様のアプリケーションを別ファイルに分けて実装してみるというのは学習効率が良いと思いますよ。

また、業務レベルであれば1からフルスクラッチで問い合わせフォームを作るようなことはあんまり無くて(サーバ環境の制約やその他条件によって無いとは言い切れないです)何らかのウェブアプリケーションフレームワークを使うことが一般的でです。
その場合、フレームワークのルールに沿って開発する必要があり、ファイルを分割するかどうかの選択肢自体が発生しません。

捕捉

参照されているサイトのコードは個人的にはあまり品質が高くない様に思いますので、progate等の有料コースが存在し、ユーザーの多いweb教材なども試してみることをお勧めします。(侍エンジニア塾等の高額なプログラミングスクールは9割外れなので候補から除外して問題無いです)

  • 解説自体は分かりやすいと思いますし、分かりやすいように平易にコードを記述しようとしている様には思えますが、根本的な考え方(特にセキュリティに関わる部分)が15年くらい前の基準の様に思います。

投稿2021/09/20 12:51

編集2021/09/20 13:03
tanat

総合スコア18716

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

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

March03

2021/09/21 10:14

自分の考えが間違っているわけではないことが分かって安心しました。 おっしゃるとおり同じ仕様のアプリケーションを別ファイルに分けて実装してみようと思います! サイトのコードについてもご意見いただきありがとうございます。 コートの品質については初学者目線では良し悪しが判断が難しいのでとても助かります。 他のユーザーの多い教材についても検討してみようと思います。
guest

0

正解はないです。
要件さえ満たし、不具合がなければそれが正解と言えます。

という前提ですが、
1ファイルに全部突っ込んでしまうとフラグや分岐の制御が必要となったり、分岐させるための情報が必要となったり、デメリットも相応にあると思います。
オブジェクト指向で組み込む場合は役割分担のためにも1ファイルでやりきることはないと思います。

どのように書いても、結局は使う人が使いやすく、管理する人が管理しやすく、セキュリティ対応が適切になされていれば良いとは思うのですけど
『PHP メールフォーム』の上位10件が勝率10%という記事もあるくらいなので、「何が正しいか」をネットで調べて出てきた記事に委ねるのは微妙な気もします(学習の教材としても)。

IPA 安全なウェブサイトの作り方などもあわせて実装を決められた方が良いと思います。

投稿2021/09/20 12:34

編集2021/09/20 12:35
m.ts10806

総合スコア80861

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

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

March03

2021/09/21 10:08

まさにおっしゃっていただいたデメリットの部分が気になっていたので、1つのファイルでやりきることはないと聞いて安心しました。 そういったデメリットを認識した上で作成できるように努めようと思います。 セキュリティ面についても参考にさせていだきます。 今は基礎の段階なのでもう少し勉強が進んでから取り組ませてもらいます>_<
m.ts10806

2021/09/21 10:59

悪手かもしれないですが「あえて」やってみて計ってみるのもありです。
March03

2021/09/21 11:44

サイトと全く同じではないですが、さきほど自分なりにアレンジして1ページにまとめたものも作ってみました。 その上でやはり3つのファイルに分けたほうが可読性が高いように感じたので自分の感覚があっていたような気がしました!
guest

0

試しにつくってみるならともかく、あとあとのことを考えれば各ページ1ファイルでいいんじゃないかなあ。

もし、共通の部分があるなら部品化して読み込むのが素直かと。

開発ポリシーによっては単純なことではなくなりますが、まずは参照サイトの通りにつくってみて、そこから自分の思うように改造してみてはいかがでしょうか?

投稿2021/09/20 12:42

takasima20

総合スコア7460

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

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

March03

2021/09/21 10:11

そうですね! たしかにサイトを参考にした上で自分なりのものを作ってみるのが勉強になってよさそうですね。 その順序で勉強を進めてみようと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問