1

これが以前に尋ねられた場合は申し訳ありませんが、私は検索を行いましたが、具体的なものは見つかりませんでした. これは役に立ちましたhttp://bakery.cakephp.org/articles/Auzigog/2008/12/29/where-should-my-code-go

継承したいくつかのコードを修正しようとしていますが、URL を変更するだけで誰のパスワードも変更できることがわかりました。

/site/user/changepassword/(ID を挿入)

次に、ユーザーコントローラーに配置しました。疑似コードを許してください:

if(session.user_id == id_from_link)
   view changepasswordform(id_from_link)
else
   warn_and_redirect();

それは正しいことであり、正しい場所だったと思いますか?

ビューで、次のようなコードを見つけます。

if(user_type is admin)
 echo admin options
if(user_type is user)
 echo user options

理想的には、次のようなビューであってはなりません。

echo options

次に、コントローラーには次のものがあります。

switch(user_type)
  case: admin
     options = admin stuff
  case: user
     options = user stuff

等々?またはこれはユーザーモデルにある必要がありますか?

4

2 に答える 2

1

URL から id パラメーターを削除するだけで、コントローラー アクションの先頭に次のように追加できます。

function changepassword(){
   $id = $this->Auth->user('id');
   ....
}

これで、ログインしている現在のユーザーでのみパスワードが変更されます。 $id が null でないことを確認する通常のチェックを必ず実行してください。

于 2013-02-01T12:08:43.750 に答える
0

ビューは実質的に print ステートメントである必要があります。

<title><?=$this->data['title']?></title>
...
<h1><?=$this->data['main_menu']?></h1>

コントローラーは、ビューを準備/リクエストを処理する必要があります。

if(loggedInUser) {
    $this->data['title'] = model->getTitle(userID);
    $this->redirect(/somepage);
}
else {
    $this->redirect(/loginpage);
}

モデルには以下が必要です。

function getTitle($userID) {
   this->doStuff($userID);
   $title = this->talkToDB($userID);
   return $title;
}
于 2013-02-07T12:47:06.763 に答える