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

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

ただいまの
回答率

90.23%

phpからhtmlに値を渡す方法

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 522

romukuro0328

score 13

php初心者です。
実現したいことがあり、皆様の知恵をお借り出来たらと思います。

MVCでちょっとしたWebアプリケーションを作っています。
今回はそのアプリケーションのログインのロジックについてご教授いただきたいです。

 実現したいこと

LoginViewで入力してもらったidを、
LoginControllerで受け取り、
受け取ったidをFirstLoginViewに送り、
FirstLoginView内で使用し、
更に、FirstLoginControllerに送りたい。

 現状の処理の流れ

前提:ユーザは自分固有のIDとランダム生成されたパスワードがメールで送られてくることとします。
(尚、セキュリティ面についてはまだ未熟な部分もある為、考慮できていないのが現状です…。)
今回はその中でも初回登録画面の処理についてご教示いただきたいです。

処理の流れは
1.ログイン画面にidとパスワードを入力してもらい、入力された値をPOSTでCに送る(LoginView)
2.入力された値を元にデータベースを参照し、idとパスワードが一致した場合はメイン画面へリダイレクトさせます。
もしデータベースを参照し、そのユーザが初回ログインだった場合のみDBにログイン状態のステータス値が格納されています)
初回登録画面へと遷移します。(LoginController)
3.ユーザに自分の好きなパスワードを入力してもらい、POSTでCに送ります(FirstLoginView)
4.受け取ったパスワードを元にUPDATEクエリを作成し実行します(FirstLoginController)

 解決方法…?

【実現したいこと】のすべてを満たす解決方法として素人なりに考えてみたのが
LoginControllerとFirstLoginControllerを1つのControllerとしてまとめてしまう
という方法です。
LoginControllerで一回idを受け取ってしまえば、あとはその値変数にいれ、変数を利用してFirstLoginControllerの処理をしてしまえば良い。
SQL文のWHERE句に当てはめるのもその変数を連結してしまえばいい。
…かなり無茶苦茶だとは承知していますが、私の頭ではこれ以外の選択肢が見つかりません。

 上記以外に解決できそうな方法

・セッションID
セッションIDを利用し、idを持ち歩いてもらう方法です。しかしこれをFirstLoginViewで表示させる場合、どうやらphpを使う方法が一般的なようですが
.htmlから.phpに拡張子が変わった場合サーバーサイド処理となってしまうようです。
.htmlの中でphpを動かす場合.htaccessの設定を書き加えることによって可能らしいのですが、理解が及ばず本当にそれで実現可能なのかわかりません。
・LoginControllerからFirstLoginViewにリダイレクトする際にidの値を一緒に渡す
これに関しては調べ方が悪いのか、実現方法を見つけることができませんでした。json形式で…というのも考えましたがLoginControllerにFirstLoginView側からリクエストを送るのか…??とこんがらがっています。

全体的に自身の知識不足からくる疑問で申し訳ありません。
長文となりましたが、なにか解決の糸口やアドバイスなどあればご教示いただきたいです。
宜しくお願い致します。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • romukuro0328

    2018/09/12 20:01

    コメントありがとうございます。自分の勉強不足であること充分承知しています。学校の活動の一環としてプロジェクトが既に進行しており、自分自身の知識が充分に付かないまま中途半端な状態でプロジェクトにあたっているのが現状です。もはや回答のしようがないレベルの質問をしている事を自覚しました…。今回データベースサーバとアプリケーションサーバーを立ち上げ、そこに独自のWebAPIを置き、ユーザのブラウザから特定のURLにアクセスしてもらうことによりWebアプリケーションを利用してもらいます。CとMの動作はサーバ側で、Vはブラウザ側で処理をしたいのです。しかしながらm6u様のおっしゃるとおりこれでは根本的な部分から認識が間違っているようですので、今一度勉強しなおして見ます。折角コメント頂いたのに申し訳ありません。

    キャンセル

  • m.ts10806

    2018/09/12 20:01

    そのMVCがオープンソースではなく現場で作られたものであればおそらく他人に解決は難しいのでは。

    キャンセル

  • tonkun4os

    2018/09/12 20:15

    そもそもMVCは概念です。MVCで作られたデスクトップアプリだって有ります。(名前忘れたけど・・・)

    キャンセル

回答 2

checkベストアンサー

0

【ログイン機能】
LoginController
actionとして、
index(ログイン画面)
firstlogin(初回登録画面)

【トップページ】
ToppageContolloer
index(トップページ画面)

とするのがいいかと思います。

ログイン機能の
indexアクションで
初回ログインの場合はfirstloginのviewに飛ばして
それ以外はtoppageに飛ばせばいいと思います。
もちろんログインエラーの場合はLoginControllerのindexのviewにエラーを持たせてそのまま飛ばせばいいかと。

ログイン情報はセッションで持ち回り
各画面のトップでセッションログインチェックをして
セッションがなければログイン画面に飛ばしてやればいいと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

いろいろ間違っていそうですが、ちょっと全部を指摘してあげられません。

ログインシステムの概要を学ぶのにちょうどよい記事があるのでそれだけ紹介しておきます。
PHPでログイン機能を実装するチュートリアル
初心者より少し上をターゲットにしていますが、ログインシステムとはどんなものなのか理解するのに役立ちます。
コピペで動かす記事ではないので、不明点を調べながら学習すると良いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.23%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる