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

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

Mary-Kate Olsen
リリース: 2024-11-02 04:47:02
オリジナル
340 人が閲覧しました

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 サイトの他の関連記事を参照してください。

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