ホームページ >バックエンド開発 >PHPチュートリアル >ログイン後にユーザーを前のページにリダイレクトするにはどうすればよいですか?
ログイン後の前のページへのリダイレクト
ユーザーが 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 サイトの他の関連記事を参照してください。