Pregunta

También se debe trabajar después de la reescritura de URL.

¿Es posible? De lo contrario, sólo puede hardcode todo.

¿Fue útil?

Solución

Si usted está tratando de crear un sistema de inicio de sesión con la redirección es necesario utilizar el HTTP_REFERER cabecera para averiguar dónde vino el usuario para que lo pueda enviar de vuelta allí. La mejor manera de hacerlo es, en su forma de aplicación de inicio de sesión algo como esto:

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

Tenga en cuenta que algunos proveedores de Internet, navegadores o proxies se tira a la cabecera árbitro, por lo que no se puede confiar en él para funcionar a la perfección para cada usuario. Si utiliza una sentencia if para comprobar si existe o no la cabecera, puede enviar los usuarios volver a la página principal o lo que sea.

Editar

Si usted está mirando para utilizar $ _SERVER [ 'REQUEST_URI'] se debe establecer en la URL bonita después de una reescritura si se está ejecutando Apache. Si está ejecutando IIS, en cuyo caso es necesario comprobar por $ _SERVER [ 'X_HTTP_ORIGINAL_URL']. Algo como esto:

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

y

//- 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>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top