HTML - Volver a la página anterior

   
Vista:
Imágen de perfil de Jose maria

Volver a la página anterior

Publicado por Jose maria (31 intervenciones) el 30/11/2013 11:26:06
Hola:

Tengo una página que, al pasar X tiempo conectado pero sin actividad me lleva a "reconectar.php"

Se trata de un pequeño form;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<h4>Dado el tiempo de inactividad en la sesión, el tiempo ha expirado.</h4>
        <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="entrarusuario">
          <span style="color:#e1e1e1; font-variant: small-caps;">Acceso a Usuarios</span>
          <br>
          <span style="font-variant:small-caps;">Usuario</span>
          <input type="text" id="nombreusuario" name="nombreusuario" class="textboxnormal" required size="18" maxlength="40" placeholder="Usuario">
          <br>
          <br>
          <span style="font-variant:small-caps;">Clave</span>
		  <input type="password" id="claveusuario" name="claveusuario" class="textboxnormal"required size="18" maxlength="40" placeholder="Contraseña">
		  <br>
		  <br>
          <button type="submit" class="button">Entrar</button>
        </form>

La idea es que me vuelva a la página anterior (la original desde la que me derivó a ésta) pero ya logueado, pero, comprobado el usuario y contraseña, me muestra la misma página con el enlace para "volver a la página anterior":

1
2
3
4
5
<?php
if (isset($_SESSION['conectado'])){
  echo'<h3 style="font-variant:small-caps;">Ha accedido correctamente</h3>
  <a href="javascript:window.history.back();">&laquo; Volver a la página anterior &laquo;</a>';
?>

Tanto si pongo <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" name="entrarusuario"> como <form method="post" action="reconectar.php" name="entrarusuario"> el regreso a la página anterior es siempre reconectar.php y no la página desde la que me había derivado a reconectarme.
Y <a href="javascript:window.history.back();">&laquo; Volver a la página anterior &laquo;</a> me vuelve a reconectar.php dado que la anterior es la misma página.

Creo que hasta aquí se me entiende.

Lo ideal es que desde este pequeño form llegue a la página original de la reconexión, ya logueado.
He probado <form method="post" action="javascript:window.history.back();" name="entrarusuario"> y funciona pero no comprueba si usuario y contraseña son correctos por lo que me deriva al index.php para conectarme. Y con la solución actual, necesito volver "a la página anterior de la anterior".

Tengan en cuenta que he podido llegar a esta página desde varias propias de acceso restringido a usuarios por lo que en action no puedo definir una página concreta.

Parece un lío pero creo que se entiende. Si tienen alguna duda de lo expresado, de lo comentan.

¿Soluciones?
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 Jose maria

Volver a la página anterior

Publicado por Jose maria (31 intervenciones) el 01/12/2013 01:04:51
Gracias a xve en un tema ya viejo (http://www.lawebdelprogramador.com/foros/HTML/1275023-Ir_varias_paginas_atras.html#i1275030 y han pasado más de dos años) que he optado por la solución a la tremenda.

Creo que se puede mejorar ya que por un instante me deja la página en blanco pero llega a lo que pretendo.

La "solución" que no termina de convencerme:
1
2
3
4
5
6
if(isset($_POST['nombreusuario'])) {
/* Y después de comprobar clave y usuario en la base de datos */
$_SESSION['conectado'] = true;
/* Con todas las variables de sesión de precise */
echo '<script>history.go(-2);</script>';
}

Dado que PHP es del lado del servidor por lo que no tiene idea de la historia en el navegador, ¿será que vía ajax se pueda implemantar?

Me temo que quedará para depurar el código en algún tiempo de ocio.

Saludos.
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
Imágen de perfil de xve

Volver a la página anterior

Publicado por xve (1178 intervenciones) el 01/12/2013 21:01:51
Hola Jose, la verdad es que no te entiendo muy bien... me cuesta de entender porque haces esto tan liado...

Yo en mi caso, en cada pagina que un usuario tiene que estar logeado para poder visualizarla, lo que hago, es que siempre valido si esta logeado (que es lo mismo que si la variable de sesión esta activa) en el inicio de la páginas, si no es así, lo redirecciono a la página de login mediante
1
header("redirect:pagina.php");

Hi ahí, es la única página donde se puede logear el usuario.

No se si esto exactamente es lo que necesitas, o te sirve de ayuda.
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
Imágen de perfil de Jose maria

Volver a la página anterior

Publicado por Jose maria (31 intervenciones) el 01/12/2013 23:02:01
Hola xve:

Sí, lo que dices es lo normal.

La cuestión está, en el desarrollo que me ocupa, que el usuario logueado accede a páginas de mapas que rastrean su posición, en otras ve el movimiento del grupo de usuarios, rutas de recogida o entrega de carga, etc. (Se trata de logística con recogidas y entregas de material, etc. y Google Maps tiene límites diarios por dominio, generan tráfico, etc.) por lo que no puedo permitirme que "se olviden" y sigan permanentemente logueados sin actividad.

Ten en cuenta que hay funciones automáticas de posicionamiento que no recargan la página o lo hacen de forma asíncrona de acuerdo al cambio de posición, y otras que generan tráfico y recursos (geolocalización, nuevos datos de recogida, entregas, etc.)

Es por ello que limito su tiempo máximo de, llamémosle "actividad pasiva", Imagina un vehículo que va marcando su posición. En el momento que se detiene (a comer o dormir), al reiniciar la marcha, aunque haya dejado encendido su equipo, encontrará el mensaje "Dado el tiempo de inactividad en la sesión, el tiempo ha expirado" y su equipo habrá permanecido inactivo.

Es por ello que creo esta página puente para que de forma automática, como quien da un interruptor, active su geolocalización al tiempo de trabajar y ver sobre el mapa, nuevos datos de su trabajo con la geolocalización propia y de los demás.

Del
1
2
3
4
5
6
7
8
9
10
$fechaGuardada = $_SESSION['ultimoAcceso'];
 // al recargar cada página tendrá el else final de actualización de $_SESSION['ultimoAcceso'] = $ahora;
  $ahora = date('Y-n-j H:i:s');
  $tiempo_transcurrido = (strtotime($ahora)-strtotime($fechaGuardada));
if($tiempo_transcurrido >= 3600){ // 1 x 60 x 60 x 1 = 1 hora...
    session_destroy();
    header('Location:reconectar.php');
// en reconectar encontrará el mensaje de caducidad de su tiempo y le permitirá reconectarse.
}  else{$_SESSION['ultimoAcceso'] = $ahora;
}
Paso al reconectar.php que no es otra cosa que reiniciar la sesión anterior.

El drama es que al necesitar de un <form> para que por $_POST verifique los datos, el volver a la página anterior no es suficiente.

Puede ser una solución la que das aunque quería "dejarle al usuario en el punto donde estaba".

De momento, con la solución anterior, ha quedado aceptable.
De todos modos lo dejaré para el último toque final.
Estoy trabajando en local y espero esta semana levantar el grupo de páginas a servidor.
Si fuere de tu interés, te enviaré el enlace (se comprenderá mejor).
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
Imágen de perfil de xve

Volver a la página anterior

Publicado por xve (1178 intervenciones) el 02/12/2013 07:28:44
Gracias por comentarlo Jose Maria, ahora entiendo mas el problema que tienes...

No podrías reconectar al usuario de manera asíncrona, sin moverte de la página con ajax?
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
Imágen de perfil de Jose maria

Volver a la página anterior

Publicado por Jose maria (31 intervenciones) el 03/12/2013 19:54:45
Lo de ajax era mi primera idea (lo decía en mi segundo post pero no lo veo muy claro, no me termina de convencer.

En algún rato de "ocio" lo pruebo dentro de cada página (tengo que ver que Google Maps no siga recargándose, no afecten las cargas desde la base de datos por terceros -administración, gestión- ...).

Quiero ver cómo anda una vez en el hosting. Porque lo de history.go(-2) lo tenía olvidado, me parece una solución muy aceptable y en este caso, cumple.
(En alguna de mis búsquedas en Mi$ter Google aparecía el primero o segundo en la lista y es un premio para este foro).

De todos modos, son los pequeños detalles que, sumados, marcan la diferencia.

Veremos (... decía un ciego).
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
Imágen de perfil de xve

Volver a la página anterior

Publicado por xve (1178 intervenciones) el 03/12/2013 21:14:15
Estoy de acuerdo contigo Jose Maria, el history.go() es correcto y completamente funcional.
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
Imágen de perfil de Jose maria

[Solucionado con éxito] Volver a la página anterior

Publicado por Jose maria (31 intervenciones) el 07/12/2013 21:49:42
Al final, después de un par de días reacomodando las versiones de códigos PHP entre local y hosting, validaciones W3C y otras hierbas, history.go(-2) ha quedado como definitivo.

Si se acuerdan del código (dentro del php y después de los parámetros de comprobación de usuario)
1
2
3
4
5
<?php
/* ... */
      echo '<script>window.history.go(-2)</script>';
/* ... */
?>
El envío a página real no es diferente al de solicitar una página en el menú.

Gracias.
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