- 2009/04/08 12:13
- CakePHP修行を追う

さて、上記の画像はCakePHPの非公式の壁紙らしいです。こちらの記事で紹介されています。→ CakePHP のおいしい食べ方: CakePHPの壁紙
なお、この記事の過去記事はこちらのカテゴリーで見ることができます。
さてさて、今回はこの記事から始めます。
モックアップですか。。。
まぁ、この「CakePHP修行を追う」では、特にデザイン的なところは追求していないので(^^;)
けど、実際にサービスを作る際は、デザインをある程度やっちゃった方がつくるモチベーションにもなりますよね(^^;)
ま、上記エントリーで、つくるサービスのだいたいのイメージはつかめたと言うことで、次にパス(笑)
では、次のページ。
さっそくログイン画面を作っていくのですね。
では、まずはビューから?
app/views/users/login.ctp
<form> <div id="sys_msg">email and password do not match!</div> <table border="0" cellspacing="2" cellpadding="2"> <tr><td width="40%" align="right">email</td><td><input type="text" size="30" name="email" value="" /></td></tr> <tr><td width="40%" align="right">password</td><td><input type="password" size="20" name="password" value="" /></td></tr> <tr><td width="40%"> </td><td><input type="checkbox" name="save" value="" /> save my info?</td></tr> <tr><td width="40%"> </td><td><input type="submit" value="Let me in!" /></td></tr> <tr><td width="40%"> </td><td><a href="">forgot your password?</a></td></tr> </table> </form>
おお~、テーブルか~(笑)。まぁ、いいか。
これにビュー用のコードを埋め込んだのがこちら。
<form action="<?php echo $html->url('/users/login'); ?>" method="post">
<?if ($error): ?>
<div id="sys_msg">email and password do not match!</div>
<? endif; ?>
<table border="0" cellspacing="2" cellpadding="2">
<tr><td width="40%" align="right">email</td><td><?php echo $html->input('User/email', array('size' => 30)); ?></td></tr>
<tr><td width="40%" align="right">password</td><td><?php echo $html->input('User/pwd', array('size' => 20)); ?></td></tr>
<tr><td width="40%"> </td><td><input type="checkbox" name="save" value="" /> save my info?</td></tr>
<tr><td width="40%"> </td><td><?php echo $html->submit('Let me in!'); ?></td></tr>
<tr><td width="40%"> </td><td><a href="">forgot your password?</a></td></tr>
</table>
</form>
え~、単純に考えて、これは1.1用の記述なので、.1.2用に変更します(^^;)。ついでにデザインもどうでもいいので、簡単な表記にしてみます。
<?php echo $form->create('User',array('action'=>'login','type'=>'post')); ?>
<?php echo $form->input('User/email'); ?>
<?php echo $form->input('User/pwd'); ?>
<a href="">forgot your password?</a><br />
<input type="checkbox" name="save" value="" /> save my info?
<?php echo $form->submit('Let me in!'); ?>
<?php $form->end(); ?>
<?if ($error): ?>
<div id="sys_msg">email and password do not match!</div>
<? endif; ?>
う~ん、結局私もチェックボックスの使い方もまだよく分からないし、情報の保存も分からないので後まわし!!(^^;)
続いて、コントローラーです。
app/controllers/users_controller.php
<?php
class UsersController extends AppController
{
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('User', $someone['User']);
$this->redirect('/');
} else {
$this->set('error', true);
}
}
}
function logout(){
$this->Session->delete('User');
$this->redirect('/');
}
}
?>
つづいて、ログインしてるか・してないかの判定をapp_controller.phpに入れます。
app/app_controller.php
<?php
class AppController extends Controller {
function checkSession(){
if (!$this->Session->check('User')){
$this->redirect('/users/login');
exit();
}
}
}
?>
で、Usersコントローラーの前にセッションチェックを入れてみます。
class UsersController extends AppController {
function beforeFilter(){
$this->checkSession();
}
で、http://localhost/sns/users/loginにアクセス!
と。。。。。本家では無限ループになってしまっている画面になりますが、こちらの環境でやると、ブラウザがひたすら無限ループしていて、エラー表示すら出ない(^^;)
本家と同じく、リダイレクトが無限ループになっちゃってますね!
ということで、次回で解決されるのでしょう。
今回はここまで(^^;)
関連記事
- 「CakePHP修行」を追う #6
- [CakePHP] ラジオボタンの使い方
- [CakePHP][1.3] でCKEditorを使う
- 「CakePHP修行」を追う #8
- CakePHPで楽天WEBサービスを使う(検索フォーム)
- Paginationの代替え表示(CakePHP)
- 「CakePHP修行」を追う #4
- [CakePHP] リンク付き画像をヘルパーで表示する方法
Sponsored Link
Google+
zenback
- Newer: デザイン力をより高める21のフリーフォント
- Older: 「CakePHP修行」を追う #4
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://www.multiburst.net/sometime-php/2009/04/chase-of-training-the-cakephp-5/trackback/
- Listed below are links to weblogs that reference
- 「CakePHP修行」を追う #5 from Sometime PHP
Additional comments powered by BackType





