Domanda

Dovrebbe funzionare anche dopo la riscrittura degli URL.

E 'possibile? In caso contrario, posso solo hardcode tutto.

È stato utile?

Soluzione

Se si sta tentando di creare un sistema di login con il reindirizzamento è necessario utilizzare l'intestazione HTTP_REFERER per scoprire dove l'utente è venuto da così lo si può mandare indietro lì. Il modo migliore per farlo è, nella vostra login utilizzo forma qualcosa di simile:

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

Si prega di notare che alcuni ISP, browser o proxy metteranno a nudo fuori l'intestazione referer, quindi non si può fare affidamento su di esso per funzionare perfettamente per ogni utente. Se si utilizza un'istruzione if per verificare se esiste o no l'intestazione, è possibile inviare gli utenti tornare alla home page o qualsiasi altra cosa.

Modifica

Se stai cercando di utilizzare $ _SERVER [ 'REQUEST_URI'] dovrebbe essere impostato l'URL bello dopo una riscrittura se si sta eseguendo Apache. Se si sta eseguendo IIS, nel qual caso è necessario verificare la presenza di $ _SERVER [ 'X_HTTP_ORIGINAL_URL']. Qualcosa di simile a questo:

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

e

//- 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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top