Home > CakePHP修行を追う > 「CakePHP修行」を追う #5

「CakePHP修行」を追う #5

cakephp-wall

さて、上記の画像は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%">&nbsp;</td><td><input type="checkbox" name="save" value="" /> save my info?</td></tr>
<tr><td width="40%">&nbsp;</td><td><input type="submit" value="Let me in!" /></td></tr>
<tr><td width="40%">&nbsp;</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%">&nbsp;</td><td><input type="checkbox" name="save" value="" /> save my info?</td></tr>
<tr><td width="40%">&nbsp;</td><td><?php echo $html->submit('Let me in!'); ?></td></tr>
<tr><td width="40%">&nbsp;</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にアクセス!

と。。。。。本家では無限ループになってしまっている画面になりますが、こちらの環境でやると、ブラウザがひたすら無限ループしていて、エラー表示すら出ない(^^;)

本家と同じく、リダイレクトが無限ループになっちゃってますね!

ということで、次回で解決されるのでしょう。

今回はここまで(^^;)

関連記事

Sponsored Link

Google+

facebook

zenback

Comments:0

Comment Form
Remember personal info

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

Home > CakePHP修行を追う > 「CakePHP修行」を追う #5

Subscribe This Blog
Subscribe This Blog
FeedBurner

Search
Categories
Tag Cloud
Twitter Counter
Archives
My Other Blogs
Affiliate Blogs
Translator
Japanese flagEnglish flag

Return to page top