1

認証後にユーザーを前のページにリダイレクトしようとしていました。以下のコードでうまく動作します。

ファイルlogin_page.php(ユーザーがログイン資格情報を入力するページ) には、SOURCE URLを保存して次のページに渡す以下のコードが含まれています。

<input type="hidden" name="url" value=<?php echo $_SERVER['HTTP_REFERER'] ; ?> />

ファイルdo_authentication.php(認証を行うページ) には、SOURCE URLecho "<meta http-equiv='Refresh' content=0;url='$_POST[url]'>";にリダイレクトするコードがあります

通常の状況では機能しますが、ユーザーが間違った資格情報を入力すると、ページがリダイレクトされlogin_page.php、ユーザーは正しい資格情報で再試行するように求められます。その際、「url」の値が に変わりますlogin_page.php

これを解決するための正しい/より良いロジックは何ですか?

4

5 に答える 5

0

以下を試してください:

<input type="hidden" name="url" value=<?php echo pathinfo(__FILE__,PATHINFO_FILENAME ).".".pathinfo(__FILE__,PATHINFO_EXTENSION); ?> />
于 2013-01-16T12:51:58.047 に答える
0

使用する:

header("location: ".$_POST['url']); // Redirects to posted page
exit; // Prevents execution of other code after this
于 2013-01-16T12:34:39.483 に答える
0

ログイン時に元のページを保持するために、常にセッションを使用してきました。セッションがサポートされていない場合、これは機能しません。次に、ユーザーをホームページに送信します。

これについて説明しているスタック オーバーフローの投稿はRedirect to previous page after login using PHPです。

于 2013-01-16T12:36:01.330 に答える
0

では、すでにURLlogin_page.phpを渡しているかどうかを確認できます。その場合は、HTTP_REFERER の代わりにこれを渡します。

<?php if(isset($_POST['url']) ?>
    <input type="hidden" name="url" value=<?php echo $_POST['url'] ; ?> />
<?php else ?>
    <input type="hidden" name="url" value=<?php echo $_SERVER['HTTP_REFERER'] ; ?> />

または、より簡潔な方法で

<?php $url= (isset($_POST['url'])) ? $_POST['url'] : $_SERVER['HTTP_REFERER']; ?>
<input type="hidden" name="url" value=<?php echo $url; ?> />
于 2013-01-16T12:43:07.800 に答える
0

セッション変数を使用して、リダイレクト先のページの値を保存することを検討する必要があります。HTTP_REFERRER は正しいオプションではありません。

于 2013-01-16T12:44:57.687 に答える