¿Cómo aplicar la ReturnURL como tal en PHP?
-
22-09-2019 - |
Pregunta
También se debe trabajar después de la reescritura de URL.
¿Es posible? De lo contrario, sólo puede hardcode todo.
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>