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

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

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

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

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

Q&A

1回答

1124閲覧

cake2.x ログイン済みユーザをアクセスさせない

koako

総合スコア6

CakePHP

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

リダイレクト

プログラムの入力元や出力先を通常とは別の場所に転送させることをリダイレクトと呼びます。

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

例外処理

例外処理(Exception handling)とは、プログラム実行中に異常が発生した場合、通常フローから外れ、例外として別の処理を行うようにデザインされたプログラミング言語構造です。

0グッド

0クリップ

投稿2020/08/04 13:17

編集2022/01/12 10:55

cake2.xでlogin処理を行いログイン済みのユーザがloginアクションに再びアクセスしようとしている時はログインユーザーのユーザー情報を取得しログインしていれば他のページにリダイレクトしたいのですが、うまくいきません。

ログインしているかの判定は調べるところ$this->Auth->user()に情報がはい行っているか$this->auth->loggedInで判定する方法があたので$this->Auth->user()を使用しログイン情報を取得しリダイレクトする処理を書いたのですがログイン済みのユーザーがアクセスされてしまいます、どなたか何か原因がわかるかたご教授願いたいです。

追記 
loginへのリンクから行くとレダイレクトすることができるurlからコントーローラー、アクッションを入力するとアクセスしてしまう

public function login() { $login_id = $this->Auth->user('id'); if ($login_id) { $this->Flash->error(__('ログイン中です')); return $this->redirect(array('controller' => 'posts', 'action' => 'index')); } if ($this->request->is('post')) { if ($this->Auth->login()) { $this->Flash->success(__('ログインに成功しました')); $this->redirect($this->Auth->redirectUrl()); } else { $this->Flash->error(__('メールアドレスまたは、パスワードが違います')); } }

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

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

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

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

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

guest

回答1

0

if文の中で値が入っていれば、ログイン中にしたいので下記の様に書き直したらうまくいくかと思います。

php

1 if (!empty($login_id)) { 2 $this->Flash->error(__('ログイン中です')); 3 return $this->redirect(array('controller' => 'posts', 'action' => 'index')); 4 }

投稿2020/08/05 16:26

Nash-BETA

総合スコア233

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

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

koako

2020/08/06 11:21

Nash-BETAさん返答ありがとうございます。 ご教授いただいたようにコードを記述したのですが、ログイン画面へのリンクからアクセスするとリダイレクトするのですが、urlからusers/loginでアクセスすると今までのようにアクセスしてしまいます。 このような場合他の原因は何が考えれるでしょうか。
Nash-BETA

2020/08/06 13:40

それでしたらポストした後の処理に書いてみるのはいかがでしょうか。 public function login() { $login_id = $this->Auth->user('id'); if ($this->request->is('post')) { if (!empty($login_id)) { $this->Flash->error(__('ログイン中です')); return $this->redirect(array('controller' => 'posts', 'action' => 'index')); } if ($this->Auth->login()) { $this->Flash->success(__('ログインに成功しました')); $this->redirect($this->Auth->redirectUrl()); } else { $this->Flash->error(__('メールアドレスまたは、パスワードが違います')); } }
koako

2020/08/08 02:11

返信が遅くなってしまい、済みません。 そちらも実行したのですがアクセスされてしまいます。 urlからアクセスするとログイン情報が消えているみたいです。多々それが何故なのか原因がわかりません。
Nash-BETA

2020/08/08 07:34

質問させていただきます。 loginメソッドは認証のポスト専用でしょうか?それともアクセス専用でしょうか?それとも両方でしょうか? もし、両方の場合はログイン後にloginメソッドにアクセスした時の実装予定など教えていただきますでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問