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