Cierre de Sesion Independiente con PHP

Imagen de goku_77

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!!!

estoy usando

Imagen de goku_77

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("

No esta autorizado a ingresar. Login Recepcionista

");
?>




<?
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.

eso lo comprobe

Imagen de goku_77

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

Imagen de Jonas

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

Imagen de goku_77

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.

este codigo

Imagen de goku_77

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

Imagen de Jonas

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