> Faqs > Problema con sesiones

Problema con sesiones

Mi problema es que cuando cierro la sesion y redirigo a la pagina de login, este no me pide ni nombre de usuario ni contraseña y las variables de sesion vuleven a los valores de los usuario logueados.

Aunque esta un poco enredado con todas las modificaciones que e intentado, esta seria la pagina de entrada

<span class="codigo"> /****************index.php***************************/

<?php require\_once '../clases/conexion.php'; if (!isset($\_SERVER\['PHP\_AUTH\_USER'\])) { header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); include 'sinpermiso.php'; exit(0); } else{ $name=addslashes($\_SERVER\['PHP\_AUTH\_USER'\]); $pass=addslashes($\_SERVER\['PHP\_AUTH\_PW'\]); $query="SELECT \* FROM administracion WHERE nombre='$name' and pass= SHA('$pass')"; $conexion = new Conexion(); $link = $conexion->conectar(); $result=mysql\_query($query,$link) or die('La consulta falló: ' . mysql\_error()); if(mysql\_num\_rows($result)!=1){ header('WWW-Authenticate: Basic realm="My Realm"'); header('HTTP/1.0 401 Unauthorized'); include 'sinpermiso.php'; $conexion->desconectar(); exit (1); } else { session\_cache\_limiter('nocache'); session\_start(); $\_SESSION\["access"\]=true; $\_SESSION\["date"\]= date("Y-n-j H:i:s"); $conexion->desconectar(); header("Location: inicio.php"); exit(0); } } ?>

/***********************************************************/

el codigo lo he sacado tanto de la pagina de desarrollo web como de php.net aunque con algunas modificaciones.

el codigo con que comienzo cada pagina segura (lo hago con un include al principio de cada pagina) es:

/*****************control_session.php***********************/

<?php session\_cache\_limiter('nocache'); session\_cache\_expire(10); session\_start(); if ((!isset($\_SESSION\["access"\]) ) || (!($\_SESSION\["access"\]) ) ){ header ("Location: sinpermiso.php"); exit(1); } $date = $\_SESSION\['date'\]; $nowdate = date("Y-n-j H:i:s"); $diftime = (strtotime($nowdate)-strtotime($date)); if($diftime >= 600) { session\_destroy(); header("Location: index.php"); } else { $\_SESSION\["date"\] = $nowdate; } ?>

/*****************************************************************/

y para cerrar

/******************cerrar.php*************************************/

<?php include 'control\_sesiones.php'; unset($\_SERVER\['PHP\_AUTH\_USER'\]); unset($\_SESSION\['access'\]); unset($\_COOKIE\["PHPSESSID"\]); session\_unset(); session\_destroy(); header("Location: index.php"); ?>

/*****************************************************************/
</span>

Se que esta un poco desordenado pero es que he intentado todo.
Espero me puedan ayudar.
Gracias de antemano

Responder la pregunta
Editar Hacer otra preguntaPreguntar

Respuestas

Ya vi cual es tu problema, tu problema es la variable PHP_AUTH_USER que
es un tipo de autenticacion basica basada en HTTP, necesitas ejecutar
PHP como modulo y se manipula mediante header para el envio de los
datos, el problema es que como tu mencionas es persistente y dependiendo
del navegador funciona o no. Prueba con libapache2-mod-auth-mysql para
lograr el efecto que quieres que es recopilar nombre de usuario y
contraseña mediante el cuadro de dialogo de autenticacion basica de apache.

Julio Cesar Sanchez