Foros del Web » Programando para Internet » PHP »

Cerrar session al cambiar de URL

Estas en el tema de Cerrar session al cambiar de URL en el foro de PHP en Foros del Web. Buenas tardes amigos! Mi duda es la siguiente. Tengo una aplicación y necesito bloquear el regreso a la misma desde una url foránea a mi ...
  #1 (permalink)  
Antiguo 14/09/2010, 14:44
 
Fecha de Ingreso: septiembre-2009
Mensajes: 30
Antigüedad: 14 años, 6 meses
Puntos: 0
Pregunta Cerrar session al cambiar de URL

Buenas tardes amigos!

Mi duda es la siguiente. Tengo una aplicación y necesito bloquear el regreso a la misma desde una url foránea a mi aplicación. Es decir, si la persona estándo en mi aplicación, coloca en el navegador "www.google.com", navega a esa página y luego le da a el botón "atrás", cerrarle la sessión. Lo he intentando hacer de varias maneras, tanto com javascript, como con php. Con javascript lo hice con el document.referrer y con php lo hice con el server['referrer'], pero ninguno me sirve. Por lo que pude ver, sólo almacenan cuando llegas a la dirección a través de un link, ya que cuando escribo x dirección en el navegador y presiono "atrás", el referer (tanto de javascript, como de php), no toman en cuenta esa dirección. Estos fueron los códigos que usé:

En este no mandé a cerrar la session, sólo estaba probando si me reconocía cuando salía de mi aplicación.
Código PHP:
<script language="javascript">



function 
cameFrom(where) {
var 
origen=document.referrer.split('http://').pop().split('/').shift().split('www.').pop();

if (
origen!=where) return false;
else return 
true;
}


var 
result=cameFrom('miaplicación');
var 
ori=document.referrer.split('http://').pop().split('/').shift().split('www.').pop();

if (
result==true) {
document.write ('es la misma pag');

}
else
{
document.write('no es la misma pag');

}

</script> 
y con php simplemente utilice

$referer=basename($_SERVER['HTTP_REFERER']); y mando a imprimir $referer y nunca ma trae la url de la que vengo.

De verdad que he leido bastante y ya no sé cómo hacerlo. Espero que puedan ayudarme! Lo que necesito es si colocan alguna url distinta a la de mi aplicación, se les cierre la session, para darle mayor seguridad a mi aplicación.

Saludos amigos!
  #2 (permalink)  
Antiguo 14/09/2010, 15:47
Avatar de zerpico_01  
Fecha de Ingreso: enero-2008
Ubicación: Wilde - Avellaneda -
Mensajes: 421
Antigüedad: 16 años, 3 meses
Puntos: 13
Respuesta: Cerrar session al cambiar de URL

HTTP_REFERER no es un dato válido para fiarse e implementar sistemas de seguridad o útilidad a la aplicación basado en el...

'HTTP_REFERER'
La dirección de la página , si existe o la hay, la cual refirió al agente de usuario a la página actual. Este valor es definido por el agente de usuario. No todos los agentes de usuario lo definen, y algunos proveen la capacidad de modificar HTTP_REFERER como una característica del software. En resumen, no se puede confiar realmente en este valor.

mas info --> http://es.php.net/manual/es/reserved.variables.php

una de las maneras seria usando sessiones pero esto dependera de lo que deseas hacer, por ejemplo si estas mostrando un formulario de registro de tres pasos y el usuario se va luego regresa, la aplicacion deberia tomar una desicion una seria eliminar todo los datos volcados por el usuario otra seria, obligar al usuario a continuar, y una ultima seria si cierra el navegador elminar todo ...

yo lo hago siempre con sesiones creo una session en cada pagina o una super global... pero es mas complicado...

prueba esto :
$_SESSION['historial_navegacion'] = $_SERVER['PHP_SELF'] ;

de todos modos dependera de lo que tu quieras hacer ...

saludos!!!
  #3 (permalink)  
Antiguo 15/09/2010, 06:45
 
Fecha de Ingreso: septiembre-2009
Mensajes: 30
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Cerrar session al cambiar de URL

Exacto amigo Zérpico. Yo trabajo con sesiones. Mi sistema es sólo de consulta, es decir, el usuario no introduce ninguna información más allá de la información de login, de resto, sólo consulta. Lo que quiero es eso, que si marcas otra url dentro del navegador y luego regresas a la aplicación, es decir, le das a "atrás", se le cierre la sesión. Pero no sé cómo hacerlo. No sé cómo hacer un código que detecte que viene desde otra URL. También intenté con el history.previous de javascript, pero no me da, de hecho, guardé el history.previous en una variable y la mandé a imprimir, pero imprime vacío. De verdad ya no sé cómo hacerlo y esa es la única cosa que le falta a mi aplicación.

Ayuda!!!
  #4 (permalink)  
Antiguo 15/09/2010, 09:25
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 1 mes
Puntos: 9
Respuesta: Cerrar session al cambiar de URL

Hola, se me ocurre que lo podrías trabajar de esta manera:
No permitas que se cachee la pagina.
El '$_SERVER["HTTP REFERER"] ' te devuelve de donde viene la pagina, por lo tanto trabajando con alguna funcion comparando si contiene tu host, podrias destruir las sessiones.

Mas o menos asi (esta hecho sin revisar, para ver la idea)
Código PHP:
Ver original
  1. $sitioreferido=$_SERVER["HTTP REFERER"];
  2.  
  3. $misitio="miwebsite.com";
  4.  
  5. if(!empty($sitioreferido){   //aca te indica si es entrada directa o viene de otro lado.
  6.  
  7. $pos = strpos($misitio, $sitioreferido);  //compara que "miwebsite.com este en el referer.
  8.  
  9. if($pos == "false"){   //si pos es false quiere decir que viene de un sitio que no es el tuyo.
  10.  
  11.  
  12. }
  13.  
  14. }

Es una idea que la hice en el momento y se puede mejorar, pero la idea es esa.

Última edición por fernandozunni; 15/09/2010 a las 09:37
  #5 (permalink)  
Antiguo 15/09/2010, 14:07
 
Fecha de Ingreso: septiembre-2009
Mensajes: 30
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Cerrar session al cambiar de URL

Muchas gracias por el aporte Fernando! Pero el asunto es que el Referer no me trae la información si me voy a otra página y luego le doy al botón atrás. Mi aplicación está más o menos de la siguiente forma:

Bienvenida -> Módulo.

Entonces si le colocó el referer a Módulo, cuando llego a él me coloca el referer de "bienvenida". Si estando dentro de módulo me voy a www.google.com y luego regreso con el botón atrás, me sigue imprimiendo: "bienvenida".

De verdad necesito ayuda! Tengo que terminar esa aplicación esta semana.
  #6 (permalink)  
Antiguo 15/09/2010, 15:55
 
Fecha de Ingreso: febrero-2009
Mensajes: 218
Antigüedad: 15 años, 1 mes
Puntos: 9
Respuesta: Cerrar session al cambiar de URL

Eso es porque la pagina te queda cacheada, como te dije en el post anterior, tenes que evitar eso.
Fijate aca:
http://www.forosdelweb.com/f4/evitar...-cache-804252/
  #7 (permalink)  
Antiguo 16/09/2010, 07:45
 
Fecha de Ingreso: septiembre-2009
Mensajes: 30
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Cerrar session al cambiar de URL

He probado mil formas y me sigue quedando cacheada, es decir, en mi página mando a imprimir

$sitioreferido=$_SERVER["HTTP REFERER"];
echo $sitioreferido;

Entonces estoy en mi página, voy a google, regreso y sigue apareciendo la página anterior de mi aplicación.

Intenté evitar el cacheo con html, con php y nada :( DE qué otra forma puedo averiguar si realmente estoy almacenando en caché o no? Voy a investigar eso un poco más! Tengo que tener lista esta aplicación pa mañana y es lo único que me falta.

Etiquetas: cerrar, session, url
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 01:30.