Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/11/2008, 11:02
Avatar de javiro
javiro
 
Fecha de Ingreso: febrero-2006
Mensajes: 48
Antigüedad: 19 años
Puntos: 1
Busqueda Como optimizar autentificacion

HOla, a ver si me podeis ayudar, porque tengo un sistema de autentificacion que me va muy lento, y lo he proyado ya en tres distintos servidores y en todos tarda como mas de 70 segundos en hacer el login.

El sistema es un formulario de acceso con los campos de user y password y ese formulario se envia a control_usuario.php donde se comprueban esos datos con la base de datos:

Código PHP:
###control_usuario.php###
<?php
include("../config.php"); //conecta con la base de datos

$query mysql_query("SELECT * FROM usuarios WHERE user = '".$_POST["usuario"]."' AND nivel < 3"); 

if(
$row mysql_fetch_array($query)){
    if (
$_POST["usuario"] == $row['user'] && (md5($_POST["contrasena"]) == $row['pw'])){
        
//usuario y contraseña válidos
        //defino una sesion y guardo datos
        
session_start();
        
$_SESSION["autentificado"] = "SI";
        
$_SESSION["nombre_user"] = $row['nombre'];
        
$_SESSION["nivel"] = $row['nivel'];
        
$_SESSION["pw"] = $row['pw'];
        
$_SESSION["id_usuario"] = $row['id_usuario'];
        
header ("Location: ".$url."nvc/index2.php"); //redirige a la aplicacion restringida porque el usuario ya está autentificado
        
exit();    
    }else{
        
//la contraseña no coincide y redirige de nuevo al formulario
        
header("Location: ".$url."nvc/index.php?nopass");
        exit();
    }
}else{
    
//no existe el usuario y redirige de nuevo al formulario
    
header("Location: ".$url."nvc/index.php?nopass");
    exit();

?>
En el el archivo index2.php es la aplicación que está restringida a los usuarios autentificados, y para controlar esto, en la primera linea del archivo hace un include a seguridad.php.

Código PHP:
###seguridad.php###
<?php
//Inicio la sesión
session_start();

//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if (!isset($_SESSION["autentificado"]) || $_SESSION["autentificado"] != "SI" || $_SESSION["nivel"]>2) {
    
//si no existe, envio a la página de autentificacion
    
header("Location: index.php");
    
//ademas salgo de este script
    
exit();
}    
?>
Que se le prodria hacer para que no fuera tan lento en un servidor compartido, yo creo que declarar tantas variables de sesion hace que valla lento, pero es necesario que esto sea así.
Salud!!