元のページに戻って来る

まっちー

まっちー

表示側で会員のログインフォームがサイドバーなんかにある場合に、ログインしたら常に特定のページへリダイレクトするのではなく、できればそのままのページにいたいですよね。

要はリファラーを取得できればいいわけですが、CakePHPのcontroller.phpを見てみると、refererというメソッドがあります。これを使うと、あっさりとリファラーを取得できる。

なので

$this->redirect($this->referer());

ログインアクションにこんな一文を書いとけば、いっこ前のページに戻ってくれます。

ただ、あれですね。例えば会員用のマイページみたいなのがあって、ログアウトしている状態でそのページに行こうとすると、強制的にログイン画面に飛ばすような処理があった場合、上手くリファラは取れません。

トップページ ⇒ マイページ ⇒ ログインしていない状態だったのでログインページにリダイレクト

この場合のリファラはトップページになっています。だから、ログインしたらトップページに戻ってしまいますね。

あとはあれ。ログイン画面でログインに失敗した場合、リファラは今いるログイン画面になってしまうので、その状態でログインすると、無限ループになってしまいます。

ログイン画面がなく、ログアウト状態でマイページに飛んだら今のページに自動的に戻って来るとか、ログインフォームでログインに失敗してもエラーメッセージが出るだけでやっぱり今のページにいるままになるとか、そんな感じの仕様なら大丈夫だと思うんですけど、そうでなければこいつだけでは上手く対応できないかもですね。

まあ、便利な関数だとは思うんですけど、これ一つあれば万事解決ってほどの破壊力はない、ドラクエの呪文で言うとニフラムくらいの位置づけですかね? それかザメハ。

LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

プログラマのまっちーです。酒が大好きです。ある一定量のお酒を飲むと壊れたレディオモードに入り、同じことを繰り返す癖があります。宜しくお願いいたします。

このメンバーの記事をもっと読む