質問

また、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>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top