Mi problema es el siguiente:
En mi página web tengo una sección de acceso restringido, he usado sesiones con cookies y me he dado cuenta de que en Firefox puedo acceder a la sección restringida, pero en Explorer no. Intentadlo en www.solucioninmobiliaria.net/acceso.php
. Si ponéis como nombre de usuario "invitado", podréis entrar (sólo en firefox).
El código del script que controla el acceso es el siguiente
Código PHP:
<?
include("includes/conexionBBDD.php");
//Sentencia SQL para buscar un usuario con esos datos
$pwd = $_POST["pwd"];
$pwd = md5($pwd);
$userid = $_POST["userid"];
$ssql = "SELECT * FROM admin WHERE nombre='$userid' and pwd='$pwd' ";
//Ejecuto la sentencia
$rs = mysql_query($ssql);
//vemos si el usuario y contraseña es váildo
//si la ejecución de la sentencia SQL nos da algún resultado
//es que si que existe esa conbinación usuario/contraseña
if ($row = mysql_fetch_array($rs) || $userid == "invitado"){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_name("plantillaInmobiliaria");
session_start();
//sesión con cookies
$nombreCookie = 'inmoCookie';
//creamos un número aleatorio entre 0 y el nº de segs del momento actual, y le aplicamos md5
$valorCookie = md5(rand(0,time()));
//asignamos una validez a la cookie de 1 día
$tActual = time(); //marca de tiempo en segundos
$tActualMasUnDia = $tActual + (60*60*24) ; //sumamos 1 día en segundos
$validezCookie = $tActualMasUnDia;
//creamos la cookie
setcookie($nombreCookie,$valorCookie,$validezCookie);
//metemos el nombre de usuario en la sesión, para trarar como admin o invitado
$_SESSION["userID"]=$userid;
//asignamos un identificador de sesión
$_SESSION["sessionID"]=$valorCookie;
//asignamos una variable del último acceso de la sesión
$_SESSION["tUltAcceso"]=$tActual;
///////
$url="Location: admin.php";
header ($url);
}else {
//si no existe le mando otra vez a la portada
header("Location: acceso.php?err=usr");
exit();
}
mysql_free_result($rs);
mysql_close($conn);
?>
Código PHP:
<?
//Inicio la sesión
session_name('plantillaInmobiliaria');
session_start();
$valorCookie = $_COOKIE["inmoCookie"];
function destruirSesion(){
session_unset();
//destruimos la variable de sesión
$_SESSION= array();
//destruimos la posible cookie
setcookie('inmoCookie','',time()-3600);
session_destroy();
header("Location: acceso.php");
exit();
}
if(!($_SESSION["sessionID"] == $valorCookie) ||
!(isset($_SESSION["sessionID"]))){
destruirSesion();
}
//si hemos llegado aquí es que el usuario está identificado
//comprobaremos si han pasado 30 minutos desde su último acceso
$tActual = time();
$tUltAcceso = $_SESSION["tUltAcceso"];
//tiempo que se permite de inactividad
//30 minutos = 30*60=1800 segundos
$periodoInactividad = 1800;
//para comprobar (quitar comentarios):
//echo "tiempoActual:".$tActual;
//echo "--tiempoUltimoAcceso:".$_SESSION["tUltAcceso"];
//echo "--resta Tactual-TultAcceso:".($tActual-$tUltAcceso);
//comprobamos que estamos dentro del periodo tolerado
if(($tActual - $tUltAcceso)>$periodoInactividad){
//si se ha pasado el tiempo, salimos
destruirSesion();
}else{
//si estamos dentro, actualizamos el valor de
//la variable correspondiente en la sesión
$_SESSION["tUltAcceso"]=$tActual;
}
?>
Un saludo y muchas gracias!