ウェブアプリの設計に問題がないかご指摘いただければと思います。
たとえば顧客情報入力フォームがありまして、テキストを入力し、確認ボタンを押すと、入力値のバリデーションを実行し、問題があれば入力画面に戻り、エラーメッセージも表示します。問題がなければ入力値をセッションに格納し、実行したいSQLの入ったクラス名、メソッド名、post_keyもセッションに格納し、確認画面を表示します。
確認画面の「送信する」とか「登録する」ボタンを押すと、
セッションに格納されたpost_keyと同一のpost_keyをaction.phpにポストし、
リフレクションを使ってセッションに格納されたクラス名、メソッド名のSQLを実行します(大抵INSERT処理です)。
この処理で意図しない動作が起こるなど、設計上の問題はないでしょうか?
ちなみに、タブブラウザなどで別のタブに別のページを開くと、セッションに格納された入力値や、SQLのクラス名、メソッド名、post_keyは削除されます。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
説明が結構難しいですが、
ユーザ情報を登録するなら、その情報はuser_regist.phpみたいな処理に値を渡して
その処理の中でクラスやDB関連のファイルを読み込み、操作を行う。
ユーザ情報を変更するなら、user_edit.phpみたいな処理を呼び出し、上で呼び出したクラスと同類の物を読み込んで、変更処理を行う。
という風にします。
こういう風にした場合、登録した後に確認メールを送る処理を新たに追加する場合は
user_regist.phpの登録処理がうまく行った後にメール送信処理を呼び出す等と
単純な機能追加はあまり考えずに出来ます。
action.phpでやりたい処理が一つのプロセスからなるなら、まだいいのですが、
登録→OKなら登録ID(DBのauto_increment)をメールのテンプレに入れて送信
と、2種類の処理を要求したり
失敗なら一旦登録内容をエラーログに保存してから、エラーページに飛ばすとか
複数の処理を組み合わせて処理を行いたいとなると、
sessionで処理パターンを渡すのは結構大変ですし、
その処理パターンを何らかのファイルに定義しておくなら、
わざわざaction.phpを通さずにその定義ファイルを呼び出しても大して苦労は変わらない。
質問者さんのやりたい事はフレームワーク的で別に悪い方法ではないとは思いますが、
そういうシステムを構築するには少々手間がかかる
そして、想定外の拡張をする際に対応しきれなくなる可能性が出てくる
という危険性があります。
No.1
- 回答日時:
セッションの削除などをちゃんとすれば、二重投稿なども起こりませんし、
少々気にしすぎかと
ただ、その設計は少々厳しい設計になると思いますよ。
リフレクションをどうとかクラス名やメソッド名という部分を見ると、
情報を取得した時点で、
登録処理を行うクラスを予約して、
実際に実行する時は、
予約した情報を元にクラスや関数を呼び出すようなやり方に見えますが、
そのような手法は手間がかかりますし、
途中でバグが混入しても、追いかけるのが大変になりやすい。
そもそも、情報を取得した時点でクラスやメソッドを予約するメリットが特にないです。
データやページ遷移の情報はセッションで持って、
処理などは全部個々のファイルやプロセスにまかせた方がいい。
クラスやメソッドを持ったまま移動して、その先で処理する方法は、
現時点ではメリットが見えません。
ご回答ありがとうございます。
私がメリットと感じた点は、入力値の渡し先が、action.phpに一元化できる点です。
クラスとメソッドを事前に予約せずに、このようにSQLメソッドの実行を1つのファイルで行ういい方法があればぜひご教授願います。
また、「処理などは全部個々のファイルやプロセスにまかせた方がいい。」の部分をもう少し具体的な実装方法として提示していただけませんでしょうか?
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP php 入力画面から確認表示画面へ情報の受け渡しについて。 1 2023/06/07 18:00
- PHP PHPで入力フォームでデータを確認表示画面まで送る流れを日本語で理解したいのです。 1 2023/05/29 19:12
- Java java 飾子を付けること(public static・・・) ・コンソールへの出力処理はmainメ 2 2022/06/16 19:34
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- Java javaの質問です 次の機能を有するメソッド4つを自クラスに作成し、実装したいです 【機能】 足し算 1 2022/06/15 17:49
- PHP 掲示板のセキュリティについてアドバイスお願い致します 1 2023/08/11 20:44
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
- PHP 「ログイン機能を持たせる」説明が気難しいです。 2 2022/10/11 02:59
- PHP PHP MySql ページング 2 2022/09/20 06:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GETのメリットについて
-
PHP/Mysqlで会員システムを構築
-
ログイン画面から入って、「戻...
-
php history.back()の戻るボタ...
-
セッション使用時のフォームの...
-
ナベアツプログラム(3の倍数...
-
DTOとEntityの差は何ですか。
-
「取得先」という表現について
-
バッチファイルでpingの結果を...
-
Yahoo! JAPAN IDを新規取得でき...
-
WordでExcelデータを差込...
-
format関数について
-
switch()文で値の大小比較
-
Dosブロンプトでtabを出力したい
-
EXCEL、マクロ-改ページ行番号...
-
【C#】DataGridViewの最大列数...
-
イベントログ情報の取得順番に...
-
ミュージックのアートワークを...
-
VB.NETからVBAマクロ(引数)を呼...
-
IPアドレスとMACアドレスを取得...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
php 入力画面から確認表示画面...
-
ログイン画面から入って、「戻...
-
POSTで受け渡したものを保存し...
-
php history.back()の戻るボタ...
-
フォームを使わずにPOST送信す...
-
VBAで重複チェックの仕方を教え...
-
PHPで値を保持する方法
-
ブラウザバックしてもチェック...
-
IFRAME内PHPのセッション変数取...
-
【Java】投稿完了画面リロード...
-
cURL関数を使用したphpからのpo...
-
HTMLエスケープ処理とデーター...
-
php に関して質問です。 各ユー...
-
asp.netでのセッションを使用し...
-
「ページネーション」で検索キ...
-
PHPで名寄せするには?
-
セッションを使用したページ遷移
-
閉じるボタン「×」を制御したい
-
ブラウザの戻るボタンで重複登...
-
GETのメリットについて
おすすめ情報