ログイン画面をデバッグする(CakePHP修行 #012)
June 29, 2007 6:54 PM written by Gen Taguchi
さてCakePHP。前回までのあらすじはこちら。
» CakePHP修行! アーカイブ | i d e a * i d e a
で、前回まででログイン画面をざっくり動作させようとしたのですが、なんだかエラーが出てうまくいきませんでした。
うっかり「CakePHP修行終了~」エントリーを書こうと思いましたがw、青い人がフォローしてくれたので続けたいと思います。ありがとう!青い人。すごい勉強になっている!
ちなみにつっこんでもらったエントリーはこちら。
» Re: CakePHP修行 #011 無限リダイレクトに気をつけろ : akiyan.com
ポイントはいくつか。
- 「ブラウザの不正リダイレクトは無限ループが原因」ってことが多いらしいことを知りました。
- ControllerのbeforeFilter()の挙動について学んだ。
- 解決方法についてアイディアをもらった。
うむ。かなりのぽかミスにもかかわらず「よくあるミス」となぐさめてくれた青い人に感謝感激。教え上手ですな。さすが開発チームのリーダー。
ではでは気を取り直していってみます。
■ 今回の作業計画
いろいろ考えた結果、今回は以下をやってみます。
- 前回のエラーに関しては単純にbeforeFilterを使わずに、ログインが必要なアクションについてその都度checkSession()を呼ぶようにしたいと思います。
- 現在Sessionに保存されている情報は'User'で、User情報全部なのですが、IDだけでいいだろ、ということで'my_id'をログイン後にセッションに保存するようにします。そうしないとユーザー情報が変わった時に全部セッション書き換えないといけないので。
- users_controllerにhome()を足します。home()は自分のホーム画面を表示するためのものです。
- http://www.codexcode.com/にアクセスすると自分のホーム画面に行くように設定してみます。
- ヘッダーとフッターのテンプレートを変更して画面をかっこよくします。
さてがしがしやりましょう。
■ セッション関連、home()など
まずはController。beforeFilter()を削除し、ログインの挙動を変更し、home()を追加します。
/app/controllers/users_controller.phpは以下のように。
function home ()
{
$this->checkSession();
$this->set('me', $this->User->findById($this->Session->read('my_id')));
}
function login()
{
$this->set('error', false);
if (!empty($this->data))
{
$someone = $this->User->findByEmail($this->data['User']['email']);
if(!empty($someone['User']['pwd']) && $someone['User']['pwd'] == $this->data['User']['pwd'])
{
$this->Session->write('my_id', $someone['User']['id']);
$this->redirect('/users/home/');
}
else
{
$this->set('error', true);
}
}
}
セッションの変更に合わせて/app/app_controller.phpも変更。
<?php
class AppController extends Controller
{
function checkSession()
{
// If the session info hasn't been set...
if (!$this->Session->check('my_id'))
{
// Force the user to login
$this->redirect('/users/login');
exit();
}
}
}
viewも追加しないといけませんね。/app/views/users/home.thtmlも作ります。とりあえずデータをDumpするだけで。
<?php var_dump ($me);
ここまでを一気に完了。テストしてみます。
まずは /users/home/ にアクセス。

↑ ちゃんとログイン画面がでました!

↑ 無事ログインすると自分の情報が!
さて、次はURLの挙動とテンプレートについて作業してみます。長くなるのでエントリーわけよっと。
Info: CakePHP修行! |
固定リンク |
コメント (0) |
トラックバック (0) |
↑


