PHPでSOのようにreturnurlを実装する方法?
-
22-09-2019 - |
質問
また、URLの後に仕事を書き換えなければならない。
それは可能ですか?そうでなければ、私ができる唯一打ちあらゆるます。
解決
あなたがリダイレクトでログインシステムを作成しようとしている場合は、
あなたは戻ってそこに彼を送ることができるように、ユーザーがどこから来たのかを調べるためにHTTP_REFERERヘッダーを使用する必要があります。
:これを行うための最善の方法は、あなたのログインフォームを使用して、このようなものです//- Login.php
<?php
if ($_POST['username'] && $_POST['password'])
{
//- Run username and password verifying script
header("Location: ".$_POST['returnurl']);
}
$RedirectURL = $_SERVER['HTTP_REFERER'];
?>
<form action="/login.php" method="post">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="hidden" name="returnurl" value="<?php echo $RedirectURL; ?>" />
</form>
してくださいあなたはすべてのユーザーのために完璧に動作するようにそれに頼ることができないので、いくつかのISP、ブラウザやプロキシが、Refererヘッダを取り除くことに注意してください。文の場合は、ヘッダーが存在するかどうかをチェックするために使用する場合は、ホームページまたは任意に戻ってそれらのユーザーを送信することができます。
編集
あなたがApacheを実行している場合、書き換えた後、それはかなりのURLに設定する必要があります$ _SERVER [「REQUEST_URI」]を使用することを探しているなら。あなたはIISを実行している場合は、その場合、あなたは$ _SERVER [「X_HTTP_ORIGINAL_URL」]をチェックする必要があります。このような何かます:
<?php
if (!isset($_SERVER['X_HTTP_ORIGINAL_URL']))
$ReturnURL = $_SERVER['X_HTTP_ORIGINAL_URL'];
else
$ReturnURL = $_SERVER['REQUEST_URI'];
header("Location: /login.php?returnurl=".$ReturnURL);
?>
と
//- Login.php
<?php
if ($_POST['username'] && $_POST['password'])
{
//- Run username and password verifying script
header("Location: ".$_POST['returnurl']);
}
$RedirectURL = isset($_GET['returnurl'] ? $_GET['returnurl'] : "/index.php";
?>
<form action="/login.php" method="post">
<input type="text" name="username" />
<input type="password" name="password" />
<input type="hidden" name="returnurl" value="<?php echo $RedirectURL; ?>" />
</form>
所属していません StackOverflow