PHP - Redireccionar dos página atras

   
Vista:

Redireccionar dos página atras

Publicado por Armando (14 intervenciones) el 10/06/2015 12:47:18
Vamos a ver si me explico bien.
Estoy en el area de niticias de mi web en la cual hay un boton de login, lo pulso y voy a otra página que esta el formulario de login, lo relleno y al enviar llama a la misma página para hacer el login con header location para redireccionar, todo esto en php.
Redireccionar a la pagina anterior con php es facil poniendo en el header location $_SERVER['HTTP_REFERER'] pero claro, esto me redirecciona la la pagina del login no a la pagina de las noticias que esta dos paginas atras.
Tengo esto:
<script>window.history.go(-2)</script> (javascript)
header("Location: " . $MM_redirectLoginSuccess ); (php)
Podria ser algo como esto pero no me funciona:
header("location:javascript:window.history.go(-2)");
Que podría hacer ??
Otra forma seria con cookies o sesiones ?
Muchas gracias de antemano, saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

Redireccionar dos página atras

Publicado por xve (5515 intervenciones) el 10/06/2015 21:55:14
Hola Armando, lo que yo hago en estos casos, es crear una variable de sesión con el HTTP_REFERER, y una vez termina todo el proceso, lo que hago es reenviarlo con el header("location:$_SESSION["referer"]... de esta manera, aunque el usuario intente validarse dos veces, te volver a la pagina que indicas...

espero que te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Redireccionar dos página atras

Publicado por Armando (14 intervenciones) el 11/06/2015 08:16:29
Es lo que me imaginaba y lo he intentado pero no me sale, también con cookies sirve, creo.
Como lo haría?

$referer= $_SERVER['HTTP_REFERER'] ;
$_SESSION["referer"] = $referer

Esto lo meto en la página del login.php, pero tengo una duda, cuando llamo otravés al login.php para hacer el login después de pulsar en el botón de submit, ¿no cambia otravés la variable $referer?
Página de noticias --> Página de login --> Página de login --> Página de noticas (esto es lo que debería ser).
Muchísimas gracias por tu respuesta y ayuda XVE
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Redireccionar dos página atras

Publicado por Armando (14 intervenciones) el 11/06/2015 08:49:57
He probado lo anterior y me vuelve al login no a la página de noticas en la que estaba.
Me recomendaron que lo hiciera con:
<script>window.history.go(-2)</script>
Pero no se como meterlo en:
$MM_redirectLoginSuccess = $_SESSION["referer"];
para después meterlo en:
header("Location: " . $MM_redirectLoginSuccess );
Un saludo: Armando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Redireccionar dos página atras

Publicado por Armando (14 intervenciones) el 11/06/2015 09:52:17
Bueno, pues lo he conseguido trabajando con cookies:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
if(!isset($_COOKIE['HTTP_REFERER']))
{
    $expiryTime = time()+(60*60*24); //Expira después de 1 dia
    setcookie('HTTP_REFERER',$_SERVER['HTTP_REFERER'],$expiryTime,'/');
}
 
{ Codigo de acceso login }
 
header("Location: " . $_COOKIE['HTTP_REFERER'] );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
?>

Solo me falta cambiar la expiración de un día a 5 minutos, es decir, esta parte:
$expiryTime = time()+(60*60*24); //Expira después de 1 dia
Podría ser así:
$expiryTime = time()+(05*60); //Expira después de 5 minutos

Un saludo: Armando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Redireccionar dos página atras

Publicado por Armando (14 intervenciones) el 11/06/2015 10:23:14
Bueno, pues conseguido y además para que la cookie expire en 5 minutos, este es el código con el login:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
if(!isset($_COOKIE['HTTP_REFERER']))
{
    $expiryTime = time()+(300); // Set to expire after 1 day
    setcookie('HTTP_REFERER',$_SERVER['HTTP_REFERER'],$expiryTime,'/');
}
// *** Validacion
if (!isset($_SESSION)) {
  session_start();
}
$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
  $_SESSION['PrevUrl'] = $_GET['accesscheck'];
}
if (isset($_POST['email'])) {
  $loginUsername=$_POST['email'];
  $password=md5($_POST['password']);
  $MM_fldUserAuthorization = "nivel";
  $MM_redirectLoginFailed = "login_error.php";
  $MM_redirecttoReferrer = false;
  mysql_select_db($database_conex_db_basededatos, $conex_db_basededatos);
  $LoginRS__query=sprintf("SELECT * FROM tbl_usuarios WHERE email=%s AND password=%s AND activo=1",
  GetSQLValueString($loginUsername, "text"), GetSQLValueString($password, "text"));
  $LoginRS = mysql_query($LoginRS__query, $conex_db_teldetv) or die(mysql_error());
  $row_LoginRS = mysql_fetch_assoc($LoginRS);
  $loginFoundUser = mysql_num_rows($LoginRS);
  if ($loginFoundUser) {
    $loginStrGroup  = mysql_result($LoginRS,0,'nivel');
	if (PHP_VERSION >= 5.1) {session_regenerate_id(true);} else {session_regenerate_id();}
    //declare two session variables and assign them
    $_SESSION['MM_Username'] = $loginUsername;
    $_SESSION['MM_UserGroup'] = $loginStrGroup;
	$_SESSION['MM_IDUsuario'] = $row_LoginRS["id_usuario"];
	$_SESSION['MM_NOMBREUsuario'] = $row_LoginRS["nombre"];
	$_SESSION['MM_NICKUsuario'] = $row_LoginRS["nick_usuario"];
	$_SESSION['MM_EMAILUsuario'] = $row_LoginRS["email"];
    if (isset($_SESSION['PrevUrl']) && false) {
      $MM_redirectLoginSuccess = $_SESSION['PrevUrl'];
    }
    header("Location: " . $_COOKIE['HTTP_REFERER'] );
  }
  else {
    header("Location: ". $MM_redirectLoginFailed );
  }
}
?>
 
Al final del trabajo web convierto mysql a mysqli, esto es por que trabajo con Dreanweaber.
Saludos y muchas gracias por todo: Armando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar