Foros del Web » Programando para Internet » PHP »

No mata la sesión en /dir1/dir2/dir3

Estas en el tema de No mata la sesión en /dir1/dir2/dir3 en el foro de PHP en Foros del Web. Hola! Mi título no es mejor pero espero poder explicar mi problema de forma clara. Tengo una web a la que le aplico ModRewrite de ...
  #1 (permalink)  
Antiguo 14/04/2012, 15:03
Avatar de Threepwood  
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 906
Antigüedad: 22 años, 9 meses
Puntos: 4
No mata la sesión en /dir1/dir2/dir3

Hola!

Mi título no es mejor pero espero poder explicar mi problema de forma clara.

Tengo una web a la que le aplico ModRewrite de manera que una URL me puede quedar así:

web.com/1/2/3/

Pero el script está en web.com/script.php

Ahora bien, en la web uso un sistema de login basado en sesiones y coockier que funciona perfecto salvo un detalle. Cuando el usuario da en la opción de "Cerrar sesión" el código PHP sólo funciona si se esta en el index de la web (index.php en el raiz) O si el Modrewrite tiene sólo un directorio (por ejemplo, web.com/dir1/ estando el script original también en el directorio raíz).

Si un usuario se quiere desloguear en el primer caso (el del error) el script no mata la sesión (el usuario sigue identificado) y además se queda en la página actual (El Script hace algo porque vuelve a cargar la página actual).

Este el script que uso para desloguear:

Código PHP:
session_name('Login');


session_set_cookie_params(2*7*24*60*60);
// Making the cookie live for 2 weeks

session_start();

if(isset(
$_GET['logoff']))
{
    
$_SESSION = array();
    
session_destroy();
    
    
header("Location: /index.php");
    exit;


Y en el link de cerrar sesión está asi:

Código:
<a class="link" href="?logoff">Salir</a>
Saludos y gracias de antemano!
__________________
Equívocos sin importancia
  #2 (permalink)  
Antiguo 14/04/2012, 15:27
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 15 años, 3 meses
Puntos: 66
Respuesta: No mata la sesión en /dir1/dir2/dir3

El problema esque estas creando un directorio virtual dinamico con ModRewrite y cuando intentas acceder al directorio real hay conflicto.

intenta poner en .htaccess una directiva que diga:

rewriteCond %{REQUEST_URI} ^/cerrar_sesion/
rewriterule .* /script.php [L]

saludos
__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 14/04/2012, 15:36
Avatar de Threepwood  
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 906
Antigüedad: 22 años, 9 meses
Puntos: 4
Respuesta: No mata la sesión en /dir1/dir2/dir3

gracias por la respuesta Santris!

Y el enlace en el texto de salida como sería? href="/cerrar_sesion" ?

Saludos,
__________________
Equívocos sin importancia
  #4 (permalink)  
Antiguo 14/04/2012, 15:37
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 15 años, 3 meses
Puntos: 66
Respuesta: No mata la sesión en /dir1/dir2/dir3

Cita:
Iniciado por Threepwood Ver Mensaje
gracias por la respuesta Santris!

Y el enlace en el texto de salida como sería? href="/cerrar_sesion" ?

Saludos,
href="/cerrar_sesion/"
__________________
Tu álbum de cromos online!!
  #5 (permalink)  
Antiguo 14/04/2012, 15:46
Avatar de Threepwood  
Fecha de Ingreso: febrero-2002
Ubicación: Argentina
Mensajes: 906
Antigüedad: 22 años, 9 meses
Puntos: 4
Respuesta: No mata la sesión en /dir1/dir2/dir3

Funcionó perfecto con href="/cerrar_sesion/?logoff"

Gracias mil!
__________________
Equívocos sin importancia

Etiquetas: sesión, usuarios
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 15:54.