Foros del Web » Programando para Internet » PHP »

Como destruir solo una sesion cuando tienes dos???

Estas en el tema de Como destruir solo una sesion cuando tienes dos??? en el foro de PHP en Foros del Web. Hola bueno ya he posteado dos temas anteriores y los solucione yo al fin jejeje pero este si que no se me ocurre. Tengo dos ...
  #1 (permalink)  
Antiguo 19/11/2005, 17:02
Avatar de CHILENOCES  
Fecha de Ingreso: octubre-2001
Ubicación: Mmm paseando por la vida
Mensajes: 491
Antigüedad: 16 años, 1 mes
Puntos: 0
Pregunta Como destruir solo una sesion cuando tienes dos???

Hola bueno ya he posteado dos temas anteriores y los solucione yo al fin jejeje pero este si que no se me ocurre.

Tengo dos sesiones en dos archivos distintos
uno se llama sesion1.php y esta en el directorio /miweb/sesion1/

y el otro archivo se llama sesion2.php y esta en el directorio /miweb/sesion1/sesion2/

Ok hasta ahi todo bien.

El codigo de la sesion1.php resumido es:

Código PHP:
session_start(); 
    
session_register("autentificarse"); 
El codigo de la sesion2.php resumido es:
Código PHP:
    session_start(); 
    
session_register("autentificado"); 
Ok luego en cada directorio tengo un archivo llamado salir.php el cual en ambos casos contiene el siguiente codigo:
Código PHP:
// Inicio la sesión
session_start();
header("Cache-control: private"); // Arregla IE 6

 // descoloco todas la variables de la sesión
 
session_unset();

 
// Destruyo la sesión
 
session_destroy();
 
 
//Y me voy al inicio
 
header("Location: index.php");
   exit; 
El problema esta en que puedo estar logeado en ambas sesiones sin tener problemas entre ambas osea puedo estar en ambos directorios y ningun problema nada de nada. Pero cuando voy a hacer el logout (salir.php) termina las dos sesiones y ya no puedo seguir navegando en ninguna.

Mi pregunta es ¿Cómo puedo hacer el codigo para salir.php de tal forma que solo destruya una sesion y deje la otra activa ya que nadie le dijo que la destruyera?

Espero la explicación haya sido buena y logren ayudarme.

Saludos!!!!!
__________________
ChilenoCesar Looking for something new...
  #2 (permalink)  
Antiguo 19/11/2005, 18:02
 
Fecha de Ingreso: noviembre-2005
Mensajes: 58
Antigüedad: 12 años, 1 mes
Puntos: 0
Tenes que darles nombre a cada sesion y despues usas session_destroy('nombre_de_sesion'); . Teoricamente te tendria que destruir solo la sesion que tiene ese nombre.

Saludos,
pancarne.
  #3 (permalink)  
Antiguo 19/11/2005, 20:43
Avatar de CHILENOCES  
Fecha de Ingreso: octubre-2001
Ubicación: Mmm paseando por la vida
Mensajes: 491
Antigüedad: 16 años, 1 mes
Puntos: 0
Tengo:
session_start();
session_register("autentificado");

Por lo tanto sería el nombre de la sesion AUTENTIFICADO verdad?
luego trato de hacer session_destroy('autentificado'); pero me da error the wrong parameter...

Alguien sabe como hacerlo o como corregir eso?

Saludos!
__________________
ChilenoCesar Looking for something new...
  #4 (permalink)  
Antiguo 20/11/2005, 06:55
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
Cita:
Tengo:
session_start();
session_register("autentificado");

Por lo tanto sería el nombre de la sesion AUTENTIFICADO verdad?
No. La función de session_register() es la de declarar una variable de sesión... y es un método obsoleto, hay que usar en su lugar la variable superglobal $_SESSION: www.php.net/session_register

Las sesiones son únicas. Lo que debes hacer es manejar 2 variables de sesión distíntas y destruir --con unset()-- dichas variables independientemente.

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 20/11/2005, 12:23
Avatar de CHILENOCES  
Fecha de Ingreso: octubre-2001
Ubicación: Mmm paseando por la vida
Mensajes: 491
Antigüedad: 16 años, 1 mes
Puntos: 0
Mi código de sesión es el siguiente:

Código PHP:
<?php
//conectamos a la base de datos
    
$conn mysql_connect("localhost""nombreusuario""contraseña"); 
    
mysql_select_db("nombre_db",$conn); 

//registramos los valores
$email $_POST["login_email"];
$ticket $_POST["login_ticket"];

// comprobamos que los datos de ingreso son correctos
    
$ssql "SELECT * FROM tickets WHERE email='$email' and ID='$ticket'"
    
$rs mysql_query($ssql,$conn); 

// hacemos la consulta a la base de datos para seleccionar los campos a utilizar
    
$usuario_consulta mysql_query("SELECT nombre,email FROM tickets WHERE email='".$_POST['login_email']."'");

// almacenamos datos del Usuario en un array para empezar a chequear.
     
$usuario_datos mysql_fetch_array($usuario_consulta);
  
// liberamos la memoria usada por la consulta, ya que tenemos estos datos en el Array.
    
mysql_free_result($usuario_consulta);
// cerramos la Base de dtos.
    
mysql_close($conn);

    if (
mysql_num_rows($rs)!=0){ 

    
//usuario y ticket válidos 
    //defino una sesion y guardo datos 
    
session_start(); 
    @
header("Cache-control: private");
    
session_register("autentificado"); 
    
$autentificarse "SI"
    
    
//guardamos variables
    
$_SESSION['identificador']=$usuario_datos['nombre'];
    
    
$_SESSION['correo']=$usuario_datos['email'];

header ("Location: vertickets.php"); 
}
else 

    
//si no existe le mando otra vez a la portada 
    
header("Location: index.php"); 

mysql_free_result($rs); 
mysql_close($conn); 

?>
Y mi código de salir.php es:

Código PHP:
<?php
// Inicializa la sesi&oacute;n.
// Si est&aacute; usando session_name("algo"), &iexcl;no lo olvide ahora!
session_start();
header("Cache-control: private"); // Arregla IE 6
// Destruye todas las variables de la sesi&oacute;n
$_SESSION = array();
// Finalmente, destruye la sesi&oacute;n
session_destroy();
 
 
//Y me voy al inicio
 
header("Location: login.php");
   exit; 
?>
Tengo dos códigos iguales a sesion solo que cambian las variables de $_SESSION pero al destruir con el codigo de salir.php no logro destruit las variables de solo una sesion si no que destruye todo ...
Alguna sugerencia como hacer para destruir solo una sesion con unset o algo no se????

Saludos!
__________________
ChilenoCesar Looking for something new...
  #6 (permalink)  
Antiguo 20/11/2005, 17:33
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... sesión solo hay una. Esta destruyendo todas las variables porque así lo estás indicando (lee los comentarios del còdigo que manejas, claramente dice "destruye TODAS las variables de sesion"). Lo que mencioné que podías hacer es manejar dos variables independientes... ve que $_SESSION no es más que una matriz y como toda matríz también puede ser multidimencional.

Haber si queda más claro... te planteo manejar algo como:
Código PHP:
 /*--- los datos de tu "primer sesión" ---*/
$_SESSION['sesion1']['var1']="Var1.1";
$_SESSION['sesion1']['var2']="Var1.2";
$_SESSION['sesion1']['var3']="Var1.3";

/*--- y una segunda sesión ---*/
$_SESSION['sesion2']['var1']="Var2.1";
$_SESSION['sesion2']['var2']="Var2.2";
$_SESSION['sesion2']['var3']="Var2.3"
y cuando quieras destruir simplemente:
Código PHP:
unset($_SESSION['sesion2']);
/*--- ahora solo existen $_SESSION['sesion1'] e inferiores ---*/ 
No destruyes la sesión (es única) solo destruyes una variable de sesión. Es simple... es lo más simple que se me ocurre, solo es organizarse y pensarle bien.

Espero te sirva. Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 20/11/2005, 20:30
Avatar de CHILENOCES  
Fecha de Ingreso: octubre-2001
Ubicación: Mmm paseando por la vida
Mensajes: 491
Antigüedad: 16 años, 1 mes
Puntos: 0
Excelente Jam funcionó a la perfección muchisimas gracias!!!
__________________
ChilenoCesar Looking for something new...
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 04:20.