Foros del Web » Programando para Internet » PHP »

trabajar con varias sesiones

Estas en el tema de trabajar con varias sesiones en el foro de PHP en Foros del Web. Hola, Mi problema es que tengo que tener dos sesiones, una para el idioma y otra para el usuario, pero cuando destruyo la sesion del ...
  #1 (permalink)  
Antiguo 12/12/2005, 12:22
 
Fecha de Ingreso: septiembre-2005
Mensajes: 99
Antigüedad: 18 años, 7 meses
Puntos: 0
Pregunta trabajar con varias sesiones

Hola,

Mi problema es que tengo que tener dos sesiones, una para el idioma y otra para el usuario, pero cuando destruyo la sesion del usuario me destruye tambien la otra y me da un error.

Hay alguna manera de poder destruir una sin que afecte a la otra.
Yo he probado con esto pero no me funciona

session_name('misesion'); //para identificar la sesion que luego borrare
session_destroy('misesion');

Realmente no se si se puede destruir una sesion dando el nombre
Alguien me puede ayudar ???
  #2 (permalink)  
Antiguo 12/12/2005, 12:41
Avatar de flaconovato  
Fecha de Ingreso: noviembre-2005
Ubicación: Bogota, Colombia
Mensajes: 137
Antigüedad: 18 años, 5 meses
Puntos: 1
trabajar con varias sesiones

Bueno lo que veo es que lo que necesitas es destruir parte de una session es decir unas variables de una session eso lo puedes hacer con unset. creo que eso es lo que nesecitas...


Saludos..
__________________
El pueblo que se resigna a tecnologías pasadas, sucumbe en el campo de la ignorancia y se entierra en sus ideales.:arriba: :arriba:
  #3 (permalink)  
Antiguo 12/12/2005, 12:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El uso de session_destroy() no es el correcto. FIjate en la documentación oficial de PHP al respecto:

Cuando tu defines un nombre de sesión por session_name() .. en tu script que borre toda esa sesión completa (con las variables de sesión que crees en ella) se hace:

Código PHP:
<?
session_name
("miseseion"); // invocas a la sesión que creastes del mismo modo
session_start(); // inicias el uso de sesiones (de esa sesión que nombrastes antes).
$_SESSION=array();// defines la sesión con un array null
session_destroy(); // destruyes la session en curso (la que invocastes).
?>
http://www.php.net/session_destroy

Un saludo,
  #4 (permalink)  
Antiguo 12/12/2005, 13:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Por cierto .. podrías aclarar que entiendes por "sesión" .. por qué creo que se está confundiendo lo que significa una "variable" en una sesión dada, donde normalmente una aplicación maneja UNA sóla sesión y "variables" en ella (que viajan en $_SESSION como array que es asociativo).

Un saludo,
  #5 (permalink)  
Antiguo 12/12/2005, 15:28
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 19 años, 11 meses
Puntos: 0
Hola:

Disculpad que intervenga, pero no acabo de entender por qué necesitas iniciar dos sesiones.

Si el visitante elige el idioma al entrar y defines la variable de sesión 'idioma', esta se conservará mientras el visitante esté conectado. Según yo entiendo, podrás ir añadiendo variables a tu sesión, entre ella las de login. Y cuando desconecte, entonces destruyes la sesion de forma normal con session_destroy();

Saludos.
  #6 (permalink)  
Antiguo 13/12/2005, 01:03
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 20 años, 2 meses
Puntos: 0
es necesario el
$_SESSION=array();
antes de empezar a asignar cosas como
$_SESSION['username']="ppp";
$_SESSION['dni']="00000";

bueno quizas si si van a ser varias sesiones no?
  #7 (permalink)  
Antiguo 13/12/2005, 03:06
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 19 años, 11 meses
Puntos: 0
Hola:

Lo que yo no comprendo bien es qué ventaja puede tener usar más de una sesion, como comenté ayer.

Me interesaría que alguien lo comentara pues tengo una web en que en una página un usuario normal (visitante) abre una sesion para conservar sus preferencias.
Si el usuario está registrado (proveedor) y se loguea para entrar en su espacio personal, sigue con la misma sesion (si ha pasado por la página que abre la sesion, o se crea una).
Cuando el usuario registrado se desconecta, se destruye la sesion. Las sesiones iniciadas por usuarios no registrados no se destruyen (ya lo hace el sistema cuando toca).
Como usuarios normales y registrados obedecen a categorías distintas (visitantes y proveedores), no me preocupa la posibilidad de que un proveedor actúe come visitante y luego como proveedor, pues no es lo normal (La cuestión es que cuando abandona el sitio como proveedor la sesion se destruye y con ella las preferencias que haya señalado como visitante).Además esto es fácil de resolver.

Por el momento, no he encontrado problemas a este método, pero me gustaría saber si realmente abrir dos sesiones tiene alguna ventaja.

Saludos.
  #8 (permalink)  
Antiguo 13/12/2005, 04:23
 
Fecha de Ingreso: septiembre-2005
Mensajes: 99
Antigüedad: 18 años, 7 meses
Puntos: 0
Yo lo que hago es lo siguiente
//Cuando un usuario entra elije el idioma y hago

session_start();
session_register("idioma");
$idioma=$lang;

//cuando un usuario se registra compruebo nombre y pwd y hago

session_start();
session_register("user");
$user=$user;

//cuando el usuario da a "cerrar sesion" hago

session_start();
session_destroy();

Lo que quiero es que cuando el usuario de a "cerrar sesion" ya no este logueado pero no quiero que se me pierda el valor que contiene el idioma, entonces no se si eso son dos sesiones, una que pisa a otra o que, supongo que lo que estaba haciendo era añadir mas variables a la misma sesion, y al cerrar la sesion pierdo todo

Entonces que es lo mejor usar unset??? para destruir un variable y no destruir la sesion. Y la sesion no la destruyo en ningun momento??

Ando un poco perdidilla
  #9 (permalink)  
Antiguo 13/12/2005, 05:00
 
Fecha de Ingreso: mayo-2004
Mensajes: 393
Antigüedad: 19 años, 11 meses
Puntos: 0
Tal como lo cuentas, estás utilizando una sola sesion.

Lo de hacer session_register("idioma"); parece que está algo desfasado.
Mejor hacer $_SESSION['idioma']= $idioma; para definir la variable de sesion.

Ahora ya tienes en la sesion la variable idioma. Luego añades $user de la misma manera cuando se loguean. Cuando cierran el login borras $user con unset($user); sin destruir la sesion y conservas la variable idioma.

Así te debería funcionar bien. Por lo menos es lo que yo hago y marcha bien.

Saludos.
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 19:01.