質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

2回答

3766閲覧

cakephpで登録された情報でログインできない

DaikiYamada

総合スコア11

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2015/12/15 13:59

cakephpを最近勉強し始めました。

簡単な会員制掲示板を勉強していますが、
登録された情報でログインできません。
(メールアドレスとパスワードが一致していればログインできるはずですが、
「メールアドレスかパスワードが間違っています」と表示されます)

どこに原因があるのかが未だにわかっていないので
よろしければ教えて下さい。

■補足

PostController

php

1<?php 2 3class PostsController extends AppController { 4 5 public $uses = array('User');//ユーザーテーブルの呼び出し 6 7 public $components = array( 8 'Session', 9 'Auth' => array( 10 'authenticate' => array( 11 'Form' => array( 12 'fields' => 13 array('email' => 'email', 'password' => 'password') //フォームの値 => fields 14 ) 15 ), 16 'loginRedirect' => array('action' => 'postlist'),//ログイン後のリダイレクト先 17 'logoutRedirect' => array('action' => 'index'),//ログアウト後のリダイレクト先 18 'loginAction' => array('action' => 'index'),//ログイン処理をどこで行うか 19 ) 20 ); 21 22 public function beforeFilter() { 23 $this->Auth->allow('index');//トップページはログインせずともアクセスできるようにする 24 } 25 26 public function index () 27 { 28 if ($this->request->is('post')) 29 { 30 if ($this->Auth->login()) 31 { 32 return $this->redirect($this->Auth->redirect()); 33 } 34 else 35 { 36 $this->Session->setFlash('メールアドレスかパスワードが間違っています', 'default', array(), 'auth'); 37 } 38 } 39 } 40 //var_dump($post); 41 42 public function postlist() { 43 44 } 45}

UsersController

php

1<?php 2 3 4class UsersController extends AppController { 5 6 public $components = array('Auth'); 7 8 public function beforeFilter() { 9 $this->Auth->allow('index', 'add');//addページにログインせずともアクセスできるようにする 10 } 11 12 public function index() { 13 14 } 15 16 public function add() { 17 $this->request->data['User']['password'] = 18 AuthComponent::password($this->request->data['User']['password']); 19 20 $this->User->save($this->request->data); 21 22 return $this->redirect( 23 array( 24 'controller' => 'posts', 25 'action' => 'index' 26 ) 27 ); 28 } 29}

Post/index.ctp(view)

php

1<h1>ログイン</h1> 2<div> 3 <?php echo $this->Session->Flash('auth'); ?> 4 <?php echo $this->Form->create('Post', array('action' => 'index')); ?> 5 <?php echo $this->Form->input('User.email', array('label' => 'メールアドレス')); ?> 6 <?php echo $this->Form->input('User.password', array('label' => 'パスワード')); ?> 7 <?php echo $this->Form->end('ログイン'); ?> 8</div> 9<?php echo $this->Html->link('新規登録はこちら!', array('controller' => 'users', 'action' => 'index')); ?>

Users/index.ctp(view)

php

1<h1>新規登録</h1> 2<?php echo $this->Form->create('User', array('action' => 'add')); ?> 3<?php echo $this->Form->input('User.name', array('label' => 'ユーザー名')); ?> 4<?php echo $this->Form->input('User.email', array('label' => 'メールアドレス')); ?> 5<?php echo $this->Form->input('User.password', array('label' => 'パスワード')); ?> 6<?php echo $this->Form->end('登録する'); ?> 7<?php echo $this->Html->link( 8 'ログイン画面へ', 9 array( 10 'controller' => 'posts', 11 'action' => 'index' 12 ) 13 ); 14 15?>

User.php(model)

php

1<?php 2 3class User extends AppModel { 4 5 public $validate = array( 6 'email' => array( 7 'rule' => 'notBlank' 8 ), 9 'password' => array( 10 'rule' => array('notBlank', 'password') 11 ) 12 ); 13}

postlist.ctp

php

1<h1>会員制掲示板へようこそ</h1>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

■PostControllerクラス
array('email' => 'email', 'password' => 'password') //フォームの値 => fields

上記部分は下記にしてみたらどうでしょうか?
cakephpのAuthはデフォルトだとusernameとpasswordのカラムをチェックします。
なのでemailとpasswordでログインしたい場合は、下記が正しいです。

■PostControllerクラス
array('username' => 'email', 'password' => 'password') //フォームの値 => fields

投稿2015/12/27 07:29

mitsulog

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんばんは。

DBに登録する際に、パスワードは暗号化されていますか?

恐らく、以下のコードで保存前に暗号化をお考えだと思います。

$this->request->data['User']['password'] = AuthComponent::password($this->request->data['User']['password']);

しかし、CakePHP2.4以降は以下のように暗号化するよう推奨されています。

(参考サイト:http://book.cakephp.org/2.0/ja/tutorials-and-examples/blog-auth-example/auth.html)

/* モデルにて */

App::uses('AppModel', 'Model');

App::uses('SimplePasswordHasher', 'Controller/Component/Auth');

class Post extends AppModel {

public function beforeSave($options = array()) { if (!$this->id) { $passwordHasher = new SimplePasswordHasher(); $this->data['Post']['password'] = $passwordHasher->hash($this->data['Post']['password']); } return true; }

私もCakePHPを勉強している身ですが、新規登録の際に暗号化しておらず、Authコンポーネントのloginメソッドではじかれていました。
ぜひ一度ご確認ください。

投稿2015/12/15 16:10

naoki855

総合スコア75

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

DaikiYamada

2015/12/17 12:34

私の場合、class Postではなく、class User で良いでしょうか? 仮にclass Userとしても「メールアドレスかパスワードが間違っています」と表示されます。
naoki855

2015/12/19 22:33

ご返信が遅くなり、申し訳ありません。 クラス名はモデルの名前に合わせて下さい。 ちなみに、パスワードはハッシュされてますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問