Frage

Es sollte auch Arbeit nach URL-Rewriting.

Ist es möglich? Ansonsten kann ich nur alles hard.

War es hilfreich?

Lösung

Wenn Sie versuchen, ein Login-System mit Umleitung erstellen müssen Sie den HTTP_REFERER Header verwenden, um herauszufinden, wo der Benutzer kam, so dass Sie ihn wieder dorthin senden können. Der beste Weg, dies zu tun ist, in Ihrem Login-Formular verwenden etwas wie folgt aus:

//- 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>

Bitte beachten Sie, dass einige ISPs, Browser oder Proxies die Referer-Header Streifen aus, so dass man sich nicht darauf verlassen kann, perfekt für jeden Benutzer zu arbeiten. Wenn Sie eine if-Anweisung überprüfen verwenden, ob der Header vorhanden ist oder nicht, können Sie die Benutzer zurück zur Homepage oder was auch immer senden.

Bearbeiten

Wenn Sie schauen, $ _SERVER verwenden [ ‚REQUEST_URI‘] sollte es nach einem Umschreiben des hübschen URL gesetzt werden, wenn Sie Apache laufen. Wenn Sie IIS laufen lassen, wobei in diesem Fall müssen Sie für $ _SERVER überprüfen [ ‚X_HTTP_ORIGINAL_URL‘]. So etwas wie folgt aus:

<?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);
?>

und

//- 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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top