(前回の続き)
ログイン機能の実装
まずはビューを実装。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php /* app/View/Users/login.ctp*/ ?> <h2>ログイン</h2> <?php echo $this->Form->create('User'); echo $this->Form->input('username', array('label' => 'ユーザ名')); echo $this->Form->input('password', array('label' => 'パスワード')); echo $this->Form->end('ログイン'); ?> <?php echo $this->Html->link('ユーザ登録', array('controller' => 'users', 'action' => 'signup')); ?> |
そしてアクションを実装。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// app/Controller/UsersController.php ... class UsersController extends AppController { .... // ログイン public function login() { if ($this->request->is('post')) { if ($this->Auth->login()) { $this->User->id = $this->Auth->user('id'); $this->User->saveField('logins', $this->Auth->user('logins') + 1); //通算ログイン回数 $this->User->saveField('lastlogin', date('Y-m-d H:i:s')); //最終ログイン日時 return $this->redirect($this->Auth->redirect()); } else { $active = $this->User->field('active', array('username' => $this->data['User']['username'])); if ($active === 0) { $this->Session->setFlash('本登録してください。'); } else { $this->Session->setFlash('ユーザ名かパスワードが違います。'); } } } } .... } |
ログアウト機能の実装
ログアウトされたらログイン画面に移行させるのでビューは必要無し。
アクションのみ実装。
1 2 3 4 5 6 7 8 9 10 11 12 |
// app/Controller/UsersController.php ... class UsersController extends AppController { ... // ログアウト public function logout() { $this->Session->setFlash('ログアウトしました。'); return $this->redirect($this->Auth->logout()); } ... } |
これでログイン・ログアウトの仕組みが完成。
(次回へ続く)
全ソース (GitHub)
https://github.com/84kure/cakephp2-sample-auth