ホームページ > バックエンド開発 > PHPチュートリアル > ログイン後に前のページではなく、index.php にリダイレクトされるのはなぜですか?

ログイン後に前のページではなく、index.php にリダイレクトされるのはなぜですか?

Barbara Streisand
リリース: 2024-11-02 01:31:31
オリジナル
844 人が閲覧しました

Why Am I Redirected to index.php After Logging In Instead of My Previous Page?

ログイン後の前のページへのリダイレクト

Web サイトにログインするとき、ユーザーが表示していたページにリダイレクトされると便利なことがよくあります。この質問では、ユーザーが意図したページではなく、index.php にリダイレクトされるコードの問題について調査します。

提供されたサンプル コードでは、login-check.php スクリプトがログイン ステータスを判断し、パラメータ(p)をlogin.phpページにリダイレクトします。ただし、ユーザーを目的のページに誘導する代わりに、index.php にリダイレクトします。

この問題を解決するには、次の解決策が提案されています:

  1. ユーザーの現在のページをクエリ文字列として渡す:

    • ユーザーの現在のページを保存する非表示の入力フィールドを含めるようにログイン フォームを変更します。これは、login.php スクリプトで $_SERVER['REQUEST_URI'] を渡すことで実行できます。
    • たとえば、ユーザーが記事 (comment.php?articleid=17) を読んでいて、その場を離れようとした場合コメントの場合、URL は次のように変更されます:
      login.php?location=comment.php?articleid=17
  2. Handle "Location" クエリ文字列in login-check.php:

    • login-check.php スクリプトで、$_POST['location'] が設定されているかどうかを確認します。存在する場合は、$redirect 変数に保存します。
  3. ログイン ステータスと場所に基づいてリダイレクト:

    • ログインに成功した場合は、$redirect でリダイレクト URL が利用可能かどうかを確認します。その場合は、ユーザーをそのページにリダイレクトします。それ以外の場合は、index.php にリダイレクトします。
    • ログインが失敗した場合、またはユーザーがすでにログインしている場合は、適切なエラー メッセージを処理するか、必要に応じてリダイレクトします。
  4. リダイレクト URL の検証:
    ユーザーをリダイレクトする前に $_GET['location'] 値を検証して、ユーザーが悪意のある URL にアクセスしようとしていないことを確認することが重要です。
  5. エンコードクエリ文字列:
    特殊文字を適切にエンコードするには、$_GET パラメータとして URL を渡すときに urlencode を使用します。

これらの変更を実装すると、ユーザーは以前に表示していたページに正常にリダイレクトされます。ログイン後はシームレスなユーザー エクスペリエンスを保証します。

以上がログイン後に前のページではなく、index.php にリダイレクトされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート