Foros del Web » Programando para Internet » PHP »

ayuda..como hacer que el usuario no vuelva atras?

Estas en el tema de ayuda..como hacer que el usuario no vuelva atras? en el foro de PHP en Foros del Web. saludos... Alguien me puede informar, pasa que tipico de las paginas que se usan post y luego al enviarlos a otra pagina, si el usuario ...
  #1 (permalink)  
Antiguo 09/02/2006, 13:40
 
Fecha de Ingreso: agosto-2003
Ubicación: santiago, chile
Mensajes: 297
Antigüedad: 14 años, 4 meses
Puntos: 0
ayuda..como hacer que el usuario no vuelva atras?

saludos...
Alguien me puede informar, pasa que tipico de las paginas que se usan post y luego al enviarlos a otra pagina, si el usuario hace en atras, se devuelve, pero salen errores como por ejemplo de que la variable no tiene valor o no esta definida.
Que formas existen para que uno impida que el usuario le de atras en el browser o que al hacer atras no pase nada?
  #2 (permalink)  
Antiguo 09/02/2006, 14:11
 
Fecha de Ingreso: agosto-2003
Ubicación: santiago, chile
Mensajes: 297
Antigüedad: 14 años, 4 meses
Puntos: 0
bueno encontre esto en los faq de javascript:

Código PHP:
<script
//Script original de KarlanKas para forosdelweb.com 

// /////////////// EN EL HEAD /////////////////// 

if (history.forward(1)){location.replace(history.forward(1))} 

</script> 
nos vemos
  #3 (permalink)  
Antiguo 09/02/2006, 14:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si tras enviar tu formulario no quieres que vuelvan al formulario (por lo menos en esa secuencia) podrías usar sesiones:

En tu script de proceso (de los datos del formulario) das valor a una variable de sesión .. y en tu script del formulario validas que NO exista esa variable de sesión (así sabes si llega de otro script o del de proceso).

Un saludo,
  #4 (permalink)  
Antiguo 09/02/2006, 14:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por byzard
bueno encontre esto en los faq de javascript:

Código PHP:
<script
//Script original de KarlanKas para forosdelweb.com 

// /////////////// EN EL HEAD /////////////////// 

if (history.forward(1)){location.replace(history.forward(1))} 

</script> 
nos vemos
Ojo con las soluciones javascript .. sobre todo para el usuario que no tenga activado javascript (mejor dicho .. que lo "desactive" con algún fin "malintencionado").

Un saludo,
  #5 (permalink)  
Antiguo 13/02/2006, 11:43
 
Fecha de Ingreso: agosto-2003
Ubicación: santiago, chile
Mensajes: 297
Antigüedad: 14 años, 4 meses
Puntos: 0
Cita:
Iniciado por Cluster

En tu script de proceso (de los datos del formulario) das valor a una variable de sesión .. y en tu script del formulario validas que NO exista esa variable de sesión (así sabes si llega de otro script o del de proceso).

Un saludo,
podrias darme un ejemplo sencillo de eso?
  #6 (permalink)  
Antiguo 13/02/2006, 11:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Sería algo así:

script1.php
Código PHP:
<?
// inicio uso sesiones
session_start();
// ver si existe la variable de sesión declarada (en el 2° script)
if (isset($_SESSION['variable_control'])){
echo 
"Ya pasastes por aquí";
// termina la ejecución del script ...
exit();
}
?>
 tu formulario HTML ... o primera página del proceso ...
script2.php
Código PHP:
<?
session_start
();
$_SESSION['variable_control']="me da igual el valor, no lo voy a usar";
// Tu proceso ...
?>
Un saludo,

PD: que el uso de las "sesiones" tal cual el ejemplo funcionen depende de tu configuración de sesiones y otros factores. Revisa las FAQ's y la documentación oficial de sesiones: www.php.net/session
  #7 (permalink)  
Antiguo 14/02/2006, 00:54
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
Una pregunta sobre esto.

¿Qué no se supone que al hacer atrás con el navegador no se está solicitando info al servidor, sino que lo que se muestra es lo previamente almacenado en la caché? (que no es nada de PHP, sino del HTML que alguna vez se generó con PHP).

Tengo duda en eso, yo creí que sólo era Javascript lo que originaba esa respuesta de errores al hacer atrás en el browser (que por cierto, se me hace una violación a la usabilidad).
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #8 (permalink)  
Antiguo 14/02/2006, 06:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En general moverese por el historial de tu navegador (ya sea por sus "botones" o javacript) es pedir nuevamente la página al servidor HTTP. Según tu navegador haga caché de la página o no .. ya sea por qué desactivastes el caché de páginas o por qué tu scritp/página que generas indicas que esa página no se haga caché (cabeceras HTTP "no caché), así te entregará lo que tenga en caché ese navegador (o incluso proxy si es cacheado por uno de estos) o se pedirá nuevamente al servidor. Por eso puedes indicar cabeceras para que tu contenido NO sea "cacheado" por navegadores/proxys (en PHP con header() las lanzas).

Lo que suele hacer el navegador es intentar re-enviar los datos de la petición anterior .. es decir .. si usamos método POST en formularios .. se nos pide re-enviar los datos nuevamente .. en modo GET (o simple petición de un URL dado) no se pide confirmación pues están implicitos esos datos en el URL que pedimos.

Un saludo,
  #9 (permalink)  
Antiguo 14/02/2006, 09:50
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 13 años
Puntos: 1
Ahhh, vale, entonces depende de las cabeceras, cool, me quedó muy claro, gracias brother.
__________________
"Di no al Internet Explorer" -Proverbio Chino-
  #10 (permalink)  
Antiguo 14/02/2006, 11:58
 
Fecha de Ingreso: agosto-2003
Ubicación: santiago, chile
Mensajes: 297
Antigüedad: 14 años, 4 meses
Puntos: 0
se agradece toda la info

nos vemos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:16.