ホームページ >バックエンド開発 >PHPチュートリアル >ログイン後にユーザーを前のページにリダイレクトするにはどうすればよいですか?

ログイン後にユーザーを前のページにリダイレクトするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-02 04:47:02347ブラウズ

How to Redirect Users Back to the Previous Page After Login?

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

ユーザーが Web サイトにログインするとき、多くの場合、元のページにリダイレクトすることが望ましいです。これにより、シームレスなブラウジング エクスペリエンスが確保され、ユーザーはタスクを続行できるようになります。

このリダイレクトを実現するには、一般的なアプローチは、ユーザーの現在のページ URL をクエリ文字列パラメーターとして渡すことです。ログインフォーム。例:

<code class="php">header("Location:login.php?location=" . urlencode($_SERVER['REQUEST_URI']));</code>

このコードは、ログイン ページ URL に「location」パラメータを追加します。このパラメータの値は、URL パラメータとの互換性を確保するためにエンコードされた現在のページの URL です。

ログイン フォームに、「location」パラメータを保存するための非表示の入力フィールドを追加します。

<code class="php">echo '<input type="hidden" name="location" value="';
if (isset($_GET['location'])) {
    echo htmlspecialchars($_GET['location']);
}
echo '" />';</code>

この入力フィールドは、ログイン フォームが送信されるときに入力されます。

login-check.php スクリプトで、POST データに「location」パラメータが存在するかどうかを確認します。有効な場合は、その値を $redirect 変数に保存します:

<code class="php">$redirect = NULL;
if ($_POST['location'] != '') {
    $redirect = $_POST['location'];
}</code>

ログインが成功した場合、ユーザーをデフォルトの宛先 (例: "index.php") ではなく $redirect URL にリダイレクトします。 :

<code class="php">if (isset($redirect)) {
    header("Location:" . $redirect);
} else {
    header("Location:login.php?p=3");
}</code>

セキュリティに関する考慮事項

ユーザーをリダイレクトする前に、$_GET['location'] パラメーターを検証することが重要です。これにより、悪意のあるユーザーがユーザーを有害な URL にリダイレクトするのを防ぎます。パラメーターを検証する 1 つの方法は、パラメーターが Web サイトのドメイン名で始まるかどうかを確認することです。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。