Foros del Web » Programando para Internet » PHP »

Encode condicional de PHPSID

Estas en el tema de Encode condicional de PHPSID en el foro de PHP en Foros del Web. Hola amigos, Me pasa algo bastante curioso. Tengo una autentificación de usuarios bastante sencilla, que busca a los mismos en la Bd y si están ...
  #1 (permalink)  
Antiguo 19/02/2004, 05:54
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta Encode condicional de PHPSID

Hola amigos,

Me pasa algo bastante curioso. Tengo una autentificación de usuarios bastante sencilla, que busca a los mismos en la Bd y si están hago lo siguiente:

Código PHP:
 if(mysql_num_rows($result)!=0)
{
    
session_start(); 
     
//session_encode();
    
header ("Location: default.php?".SID."");
}else{ 
     
//si no existe le mando otra vez al inicio
     
header("Location: index_err.php");

Hasta ahi no hay nada anormal.

Dentro de la pagina tengo un link "desconectar" que llama al siguiente .php

Código PHP:
<?
session_start
();
$_SESSION = array();
session_destroy();
header("Location: index.php");
exit;
?>
Pues bien, al iniciar el navegador y rellenar los datos en el index.php (usuario y contraseña) podemos encontrar en la url que pasa el id:

Código PHP:
http://www.mipagina.com/default.php?PHPSESSID=0e9d2fd94d60ed014fcfe6066cd5c62f 
Si desconecto, me debe matar la sesion y todas las variables de sesión utilizadas sin embargo, al volver a entrar me muestra en la url:

Código PHP:
http://www.mipagina.com/default.php? 
Es como si ya la tuviera y no la hubiera destruido. Esto me pasa, incluso cambiando de usuario.

Estoy un poco perdido ya que he buscado y buscado y creo qeu estoy matando la sesión correctamente.

¿Me podéis ayudar?

Muchas gracias otra vez
__________________
Lailuluelo
El error está en lo obvio
  #2 (permalink)  
Antiguo 19/02/2004, 07:16
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si te fijas .. el SID (Identificador Unico de sesión ..) lo propagas en tu link hacia default.php al autentificarse el usuario . .pero no lo haces en la "deconexion".

Debes aclararte si vas a propagar el SID por el URL o vas a dejar que PHP lo haga en cookies (más serguro que por el URL, con el inconveniente de que debes usar un navegador que acepte cookies).

Ten encuenta también que "PHPSID" es el nombre que dá PHP por defecto a la sesión .. pero no tiene nada que ver con el significado de SID que equivale al nombre de la sesión + el ID de la sesión .. El nombre de una sesión se puede cambiar con la función session_name() .. así que si hablas del "PHPSID" .. mejor usa el termino "SID" para hacer referncia al SID y su propagación.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 19/02/2004, 07:27
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 0
Hola,

Vamos por partes:

1.- ¿Para que debería propagara el SID en la desconexión? Ya no lo necesitaria, ¿no?

2.- Debo hacerlo por URL y lo tengo claro. No creo que este mezclando conceptos en el código ya que he hecho pruebas con el limitador en el navegador y funciona con cualquier restricción a no usar cookies.

3.- Cuando hablaba de "PHPSID" en realidad me referia a "PHPSESSID". No utilizo nombre para mi sesión, utilizo por defecto.

¿Me podeís ayudar? Gracias de antemano
__________________
Lailuluelo
El error está en lo obvio
  #4 (permalink)  
Antiguo 19/02/2004, 07:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
1) .. tu preguntabas por qué no te sale el SID ahí en tu redireccionamiento que haces en la desconexión.

Si matas la sesión .. el SID ya no te hace falta . .es más ..ese SID debería quedar nulo (en proceso de "garbage" (basura en espera de ser borrado fisicamente.

2) .. Ya te he comentado .. si propagas el SID en cookies (no lo digo yo sólo ... lo recomienda PHP.net) tu sitema que usa sesiones será más seguro a consta de que si tocas con un navegador que no acepte cookies tu sistema no funcionará.

3) Te entendí .. pero de todas formas el término es "SID" .. no el nombre que le des a tu sesión o que uses el que dá php por defecto si no defines tu un nombre para tu sesión.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 19/02/2004, 07:43
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 0
Cluster, no me malinterpretes, sólo trato de explicarme, te agradezco muy sinceramente tu ayuda y la del foro.


1) .. tu preguntabas por qué no te sale el SID ahí en tu redireccionamiento que haces en la desconexión.

No me he explicado.

Pasos:
1a.- Abro el navegador y al hacer la conexión me pone el id de esa sesion en la url.
1b.- Realizo la desconexión matando la sesión.
1c.- Inicio de nuevo la autentificación, con lo que ello conlleva, creo una nueva sesion con un nuevo identificador, pero ese id ya no me lo muestra en la url.

2) .. Ya te he comentado .. si propagas el SID en cookies (no lo digo yo sólo ... lo recomienda PHP.net) tu sitema que usa sesiones será más seguro a consta de que si tocas con un navegador que no acepte cookies tu sistema no funcionará.

Completamente de acuerdo contigo, pero me obligan a hacerlo así, no atienden a razones.

3) Te entendí .. pero de todas formas el término es "SID" .. no el nombre que le des a tu sesión o que uses el que dá php por defecto si no defines tu un nombre para tu sesión.

De acuerdo.

Muchas gracias.
__________________
Lailuluelo
El error está en lo obvio
  #6 (permalink)  
Antiguo 19/02/2004, 07:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
1) .. OK, "parece" que estás propagando el SID en cookies en tu configuración de PHP.ini .. Si vas a propagar el SID por el URL y manualmente como lo haces añadiendo el SID en tus links y redireccionamientos que hagas debes desactivar:

session.use_cookies = OFF (u 0) ...

Sino, el SID se propagará en la cookie (aunque debería salirte en tu URL si lo llamas bajo el nombre de constante SID .. ). El SID también se peude obtener con las funciones:

$tusid=session_name()."=".session_id();

Pruebalo también si quieres en lugar de la constante SID.

2) Ok .. avisados están .. tu te lavas las manos xD...

Pasate por la documentación oficial de PHP sobre sesiones:
www.php.net/session

Fijate en las directivas de configuración de PHP sobre sesiones. Tienes algunas que definen el tiempo de expiración del documento y del própio SID para pasarlo al modo "garbage" (que es donde debería quedar al matar tu sesión por tu "desconectar.php").

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 19/02/2004, 08:09
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 0
El site está en un hosting, no se yo como llevarán eso de las peticiones para cambios de ini. Tampoco se como lo tienen estructurado de manera que no afecten estos cambios a los demas usuarios.

Lo miraré con ellos y veremos que se puede hacer.

MUCHAS GRACIAS
__________________
Lailuluelo
El error está en lo obvio
  #8 (permalink)  
Antiguo 19/02/2004, 09:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Las directivas de configuración que te mencioné puedes hacerlo tu mismo dese tus scripts vía:

ini_set() y también en .htaccess archivos ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 20/02/2004, 09:24
 
Fecha de Ingreso: mayo-2003
Mensajes: 125
Antigüedad: 14 años, 7 meses
Puntos: 0
MUCHAS GRACIAS

MUCHAS GRACIAS
__________________
Lailuluelo
El error está en lo obvio
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 21:02.