2010-11-23 21 views
3

は私のページです:リダイレクトループの原因ここ

リダイレクトページ:ユーザーのログイン情報が有効であれば、にリダイレクト : 、ユーザがオープンセッションを持っている場合、ページに

ログインページにログインするためにリダイレクトし、適切なリソース他 にリダイレクト$ _SERVER ['HTTP_REFERER]] elseログインページを表示

リダイレクトページにアクセスすると、有効なセッションがないことがわかり、ログインページにリダイレクトされます。ログイン後、問題は発生しませんが、認証後に「このWebページにリダイレクトループがあります」というメッセージが表示されます。 Chromeのページ

いくつかの方法があります(IEは有効なログインの詳細を提供し、宛先のリソースに行き、無効なログインを提供し、エラーメッセージを受け取るなど)ので、実際のループではありません。しかし、私はブラウザの混乱(aからbへ行く)を見ることができます。

どのように私はこの問題を解決できますか?あなたが成功し、ログインする前にログインページの右をロードする必要があるため

乾杯

+1

問題はおそらく$ _SERVER ['HTTP_REFERER']、あなたは実際のパスをここで使用したいかもしれません.. ??私のReferrerがリダイレクトスクリプトで、有効なセッションがある場合、セッションが有効で、以前のリダイレクトスクリプトにリダイレクトされていることがわかります。私はあなたのアプリケーションアーキテクチャを正しく取得したいと思っています –

答えて

5

$ _SERVER [「HTTP_REFERER」]は常にログインページになります。だから、正常にログインすると、リファラーがログインページになるので、ログインページはログインページにリダイレクトされます。ログインページは何度も繰り返しログインします。

$ _SERVER ['HTTP_REFERER']に頼るのではなく、取得しようとしているページを$ _SESSIONまたは$ _COOKIE変数に格納してください。ほとんどのセッションは、設定に応じてより良いでしょう。

+0

これは原因です。 –

+0

ようこそ。私は以前も同じことをしてきました。 –

0

「リダイレクトページ」にリダイレクトせずに、ログインページを1回のパスでリダイレクトできます。

1

私の推測では、次のとおりです。

ユーザーがセッションではなく、有効なものを(例えば:セッションハッシュが一致しない)がある場合は(彼はセッションを持っているので)、それは、ログインページにリダイレクトされます。しかし、彼がそこに着くときに、彼がセッションを持っているかどうかをチェックします(しかしそれは有効ではありません)ので、インデックスリソースにリダイレクトします。セッションが有効かどうかをチェックしますが、そうではありません。あなたは彼をログインページにリダイレクトします。それで...

これを修正するには?ログインページと他のリソースの両方にセッションの有効性(存在だけでなく)がないかどうかを確認します。

もちろん、HTTP_REFERERがログインの場合は、それを無視してインデックスリソースに転送します。

1

$ _SERVER ['HTTP_REFERER']変数には有効なデータが含まれていることを常に確認する必要があります。これは、ユーザーエージェントがこの値を提供しているため信頼できないためです。ログイン情報を提出した後

the php.net manualから

The address of the page (if any) which referred the user agent to the current page. This is set by the user agent. Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature. In short, it cannot really be trusted. 
+0

これは良い点です。また、ユーザーに移動しようとしている現在のページがない場合は、デフォルトの場所を選択する必要があります。 –

2

最後のページは、ユーザーが見たが、彼らがログインするためのフォームだったので、$_SERVER['HTTP_REFERER']は、ログインページのURLになるだろう。

ログインページにリダイレクトする前に、 'redirect to' URLをPHPセッションに保存することを検討してください。ログインページにリダイレクトするときにパラメータとして渡すこともできますが、その方法では潜在的なセキュリティ上の脆弱性(ユーザーを別のサイトにリダイレクトする、偽のHTTPヘッダーを追加するなど)を見ることができます

関連する問題