Foros del Web » Programando para Internet » PHP »

Gestión de sesiones, por cookies o por URL

Estas en el tema de Gestión de sesiones, por cookies o por URL en el foro de PHP en Foros del Web. Hola a todos! Estoy empezando con las sesiones de PHP, y pensaba que más o menos las entendía, pero ahora se me plantean varias dudas. ...
  #1 (permalink)  
Antiguo 12/02/2007, 12:48
Avatar de irenuska**  
Fecha de Ingreso: noviembre-2006
Ubicación: A veces aquí y otras veces allí
Mensajes: 43
Antigüedad: 18 años
Puntos: 0
Gestión de sesiones, por cookies o por URL

Hola a todos!

Estoy empezando con las sesiones de PHP, y pensaba que más o menos las entendía, pero ahora se me plantean varias dudas. ¿Como sé si las sesiones se pasan por cookies o por la URL? Yo en mis links no pongo en ningun sitio el Id de la sesión, y he comprobado que si deshabilito las cookies en el navegador, no funciona. Por lo que entiendo que en mi caso se pasan por cookies.

A mi me interesaría pasarlas por la URL, para evitar que el usuario tenga que tener obligatoriamente las cookies habilitadas. ¿Como lo hago? He leido que hay una constante predefinida, SID, que tiene el Id de la sesión, y que si habilito cierta opción del archivo de configuración se puede pasar automáticamente. Sin embargo a mi no me pasan.

He hecho un echo de esta constante y nunca tiene un valor, así que decidí crearla yo con un define y la función id_session, y pasarla yo manualmente por la URL. Pero me sigue pasando lo mismo, si deshabilito las cookies, tampoco funciona.

he hecho un phpinfo, y tengo estos valores:

session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid On On

¿No se supone que el Id se pasa por defecto?? No lo entiendo!!

os explico un poco como es mi sitio, por si ayuda.... Para acceder a ciertas páginas es necesario que los usuarios se autentiquen con Login y Password. Lo hago mediante un formulario, y si son correctos creo unas variables de sesión, almacenando estos valores.

Después en las páginas que necesito estos datos, abro una sesión, y trabajo con las variables.

os pongo el código que tengo: (En comentarios he puesto la definición del SID, y el paso del mismo...)

En este script creo la sesión:

Código:
//Usuario válido.
//Se define una sesión.
session_name('proyecto');
session_start();
//echo 'La sesión actual es: '.session_id();
//define('SID', session_id());
//Se crea una variable de sesión para indicar que el usuario ha pasado el proceso de autenticación.
$_SESSION['autentificado'] = 'SI'; 

//Se crean varias variables de sesión con datos acerca del usuario.
$row = mysql_fetch_array($rs);

$_SESSION['login'] = $row['Login'];  

$_SESSION['password'] = $row['Password'];  
	
$_SESSION['id_personal'] = $row['Id'];

$_SESSION['perfil'] = $row['Perfil'];
	
//header ("Location: dentro.php?SID=".SID); 
header ("Location: dentro.php); 
exit();
Y en este accedo a los valores:

dentro.php

Código:
<?php
/*
Este script es el que se encarga de mostrar todos los enlaces que tiene la aplicación. Para ello se divide la página en dos frames. En el superior se pondrán todos los enlaces, y en el inferior se irá visualizando cada uno de ellos.
Sólo es accesible para usuarios registrados.
*/

//Se lee el SID de la sesión en curso
//define ('SID', $_GET['SID']);

//Se comprueba que el usuario ha pasado por el proceso de autenticación
include('seguridad.php');

//Se incluye el fichero de la libreria donde están las funciones que se utilizan
require('../libreria/varios/var_paginas_html.php');
?>

	
<?php
$titulo = 'dentro.php';
var_hacer_encabezado_html($titulo);
?>

frames...<body>
</body>
</noframes></html>

seguridad.php

Código:
<?php
/*
este script se encarga de implementar la capa de seguridad en todas aquellas páginas que sólo son para usuarios registrados. Comprueba que el usuario haya pasado por el formulario en que debe autenticarse y que los datos que ha introducido son correctos.
*/

//Se retoma la sesión
session_name('proyecto');
session_start();
//Se comprueba que el usuario está ya autentificado
if($_SESSION['autentificado'] != 'SI')
//Si el usuario no ha pasado por el proceso de autenticación se le reenvía a esta página y además se sale del script para que no se visualize nada de la página de acceso restringido.
{
	header("Location: entrar.php");
	exit();
}
?>
Muchas gracias a todos de antemano, y a ver si alguien me puede abrir los ojos un poco!!!!
  #2 (permalink)  
Antiguo 12/02/2007, 14:33
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
De acuerdo Re: Gestión de sesiones, por cookies o por URL

Cita:
Iniciado por irenuska** Ver Mensaje
Hola a todos!

session.use_cookies On On
session.use_only_cookies Off Off
session.use_trans_sid On On
Pues coloca esa opciòn en off, la que esta en negrita.

Saludos.
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 12/02/2007, 15:04
Avatar de irenuska**  
Fecha de Ingreso: noviembre-2006
Ubicación: A veces aquí y otras veces allí
Mensajes: 43
Antigüedad: 18 años
Puntos: 0
Re: Gestión de sesiones, por cookies o por URL

Hola Carxl!

Ante todo, gracias por tu respuesta. Sin embargo, he de decirte que eso ya lo he probado, y entonces no me funciona nada. Pasa lo mismo, que si deshabilito las cookies en el navegador....
Por eso he deducido que en mi caso funciona todo por cookies, así que mi pregunta es como lo puedo hacer para evitarlas?

Se te ocurre algo??
  #4 (permalink)  
Antiguo 12/02/2007, 15:07
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 18 años, 3 meses
Puntos: 70
De acuerdo Re: Gestión de sesiones, por cookies o por URL

Estas segura de que agarras el php.ini que es?? por que normalmente cuando uno hace esto, debe funcionar.

Cunado haces una modificaciòn.., y vas al phpinfo() ves efectivamente que se realizò el cambiò o queda igual??. Por que si es asì..., es que no estas tocando el php.ini que es.

Por ahora no se me ocurre nada mas.

Saludos.
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #5 (permalink)  
Antiguo 12/02/2007, 15:16
Avatar de irenuska**  
Fecha de Ingreso: noviembre-2006
Ubicación: A veces aquí y otras veces allí
Mensajes: 43
Antigüedad: 18 años
Puntos: 0
Re: Gestión de sesiones, por cookies o por URL

Al principio eso pensaba yo, k me estaba colando en el archivo. Pero haciendo de nuevo phpinfo, si k me habían afectado los cambios......., asi que el archivo era el correcto.

¿Se supone que si solo dejo habilitado use_tran_id, el session id se pasa por la URL automaticamente??? o tengo q hacer algo más?? He mirado las URLs cuando pincho los enlaces, y ahí no aparece ningún id, a no ser que lo pase yo manualmente. Pero si lo paso yo, el script destino como sabe que se refiere a una sesión? como se lo indico?

Tengo demasiadas preguntas, y no sé si me estoy explicando correctamente :(
  #6 (permalink)  
Antiguo 12/02/2007, 15:49
 
Fecha de Ingreso: diciembre-2003
Mensajes: 1.583
Antigüedad: 20 años, 10 meses
Puntos: 13
Re: Gestión de sesiones, por cookies o por URL

irenuska**:

Según entiendo, habilitar el paso automático de SID mediante session.use_trans_id debiera sólo debiera funcionar compilando PHP con --enable-trans-sid. Si en tu instalación por defecto de PHP esto ya venía habilitado entonces no deberías tener problemas.

Pero como dices que no te funciona, el SID tendrías que pasarlo manualmente. Para eso basta con que en las URLs relativas agregues la constante SID:

Código:
header("Location:index.php?SID");
Pero ojo, ese valor sólo será visible cuando no tengas habilitadas las cookies en tu navegador (obvio, sólo ahí se hace necesario).
__________________
El conocimiento es libre: Movimiento por la Devolución
  #7 (permalink)  
Antiguo 12/02/2007, 16:14
Avatar de irenuska**  
Fecha de Ingreso: noviembre-2006
Ubicación: A veces aquí y otras veces allí
Mensajes: 43
Antigüedad: 18 años
Puntos: 0
Re: Gestión de sesiones, por cookies o por URL

Hola Frijolerou:

En mi código había echo echo SID, y no me salia nada. Esto es debido entonces a que tenía las cookies habilitadas?? Yo pensaba que en realidad no me reconocía esta constante.

Entonces si deshabilito las cookies, basta con pasar por la URL, sid?? No hace falta poner nada más, ni definir nada antes?

Y en el script destino, la sesión, se asocia directamente con este Id, sin decirle nada? basta con hacer session_start()??

Lo voy a probar, y muchas gracias por todo, la verdad es que poco a poco me voy aclarando algo más... :)
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:04.