Forums:
Tengo un sistema en donde los usuarios deben abrir su sesion para el manejo de datos; El detalle es, que cuando abren sus sesiones los usuarios y uno de esos usuarios cierra la sesion se cierran todas, como hago para que no pase eso. :?
Estoy usando SESSION, todo carga bien y funciona muy bien!! pero el problema es que cuando se cierra una sesion de varias se cierran todas!!!
Que funciones estás usando
Que funciones estás usando para iniciar la session ...???
Estás usando archivos para guardar la información de la session ...???
Cómo estás destruyendo la session ...???
bye
;)
estoy usando
estoy usando session_start(); para iniciar y enviar las variables con $_session();, pero no estoy guardando nada en ningun archivo, sino que estoy registrando las aperturas y cierres de sesiones en una Base de Datos, y las sesiones las destruyo con session_destroy();
<?
session_start(); //esto es cuando ya se reciben los datos en la sesion, ya esta aperturada
$_SESSION['nombre'];
$_SESSION['apellido'];
$_SESSION['ced'];
$_SESSION["nreporte"];
//echo $_SESSION["nreporte"].", ".$_SESSION['codigo'].", ".$_SESSION['nombre'].", ".$_SESSION['apellido'];
if (!isset($_SESSION['codigo']))
die("
");
?>
<?
session_start(); //aaqui es cuando se cierra la sesion
session_destroy();
?>
lo que no quiero que pase es que cuando se cierre una sesion, no se cierren todas las sesiones que estan abiertas, sino especificamente la que se esta cerrando!!! :?
B.V.
Cual es la parte del php.ini
Cual es la parte del php.ini en donde especificas el que el controlador de sesiones use una base de datos ...???
bye
;)
Estás probando en distintos
Estás probando en distintos computadores o navegadores? donde asignas los valores a las variables $_SESSION?
eso lo comprobe
eso lo comprobe, abri dos sesiones de diferentes usuarios en diferentes maquinas, y cuando cierra una sesion la otra sesion tambien cierra, tengo que volver a loguearme!!!
B.V.
Yo uso algo como esto para
Yo uso algo como esto para logueo:
Todos los scripts inician con:
<?php
session_start();
?>
Y estas son las funciones que uso para la validación:
<?php
function validar($user, $passwd){ // Valida la información de usuario y retorna el nivel de acceso '1' administrador, '2' usuario
global $link;
if (!$link){
conectarbd();
}
$passwd = md5($passwd);
$query = mysql_query("SELECT * FROM et_usuario WHERE id='$user' AND passwd='$passwd';");
if (!$query){
echo "No se ha ejecutar la consulta : " . mysql_error();
return false;
}
else{
if ( mysql_num_rows($query) == 0 )
return false;
else{
nuevaSesion($user,$passwd);
return true;
}
}
}
?>
<?php
function nuevaSesion($user, $passwd){ // Inicializa la variable global $_SESSION para el manejo de las sesiones
$_SESSION['user'] = $user;
$_SESSION['passwd'] = md5($passwd);
$_SESSION['time'] = time();
$_SESSION['id'] = session_id();
$_SESSION['validate'] = md5($user.$passwd.time().session_id());
session_write_close();
}
?>
Y para cerrar la sesión:
<?php
function cerrarSesion(){ // Termina la sesion
session_destroy();
}
?>
pero te funciona
pero te funciona con varios usuarios a la hora de cerrar una sesion especifica!!! si un usuario1 abre su sesion en una computadora de una oficina1 y el otro usuario2 abre su sesion en una computador2, y el usuario2 cierra su sesion el de el usuario1 tambien se cierra o no?
B.V.
Claro que funciona! pruebalo,
Claro que funciona! pruebalo, pero debes implementar la funcion conectabd() que debe seleccionar la base de datos y abrir sesión en ella.
este codigo
este codigo lo coloco en un archivo a parte, por ejemplo donde se abre la sesion coloco los codigos donde se cargan las variables de $_session[]... y el que cierra la sesion en otro archivo? por ejemplo cerrar_sesion.php
<?php //este se llamaria cerrar_sesion.php
function cerrarSesion(){ // Termina la sesion
session_destroy();
}
?>
B.V.
Son funciones puedes crear un
Son funciones puedes crear un archivo llamado "funciones.php" y aquí colocas todas las funciones que uses y en los scripts colocas:
<?php
session_start();
include("funciones.php"); //Aquí incluyes el archivo que contiene las funciones.
$user=$_GET['nombre_ususario'];
$pass=$_GET['password'];
//Ahora llamo a la función validar, esta llamará a nuevaSesion() y a
//conectarbd()->"esta la debes implementar por tu cuenta, conecta a la base de datos"
if (validar($user, $pass)){
echo "Exíto al validar y crear sesiones";
}
else
echo "Error al validar";
?>
Lo que vemos es básico pero funciona bien, puedes seguir los consejos de yahuar_kuntur y escribir otra función que valide los datos enviados por el navegador antes de usar las funciones de logueo para evitar inyecciones de código.
Páginas