acabo de hacer un sistema de login de usuarios y me preguntaba si es un script seguro y si ahy otra forma mas simple de hacerlo o que sea mas eficiente ya que uso dos querys y lo ideal seria usar uno, pero no se me ocurre otra forma de evitar los intentos de conexion masivos para sacar el pass
aca les dejo el codigo:
Código PHP:
<?php
session_start(); //// Antes de iniciar una sesion nueva
session_destroy(); // se detruye cualquier session anterior.
if($_POST['conectar']){
/// Valores enviados por POST ///////////////////////////////////////
$nick = $_POST['nick'];
$pass = md5($_POST['pass']);
/////////////////////////////////////////////////////////////////////
unset($_POST); // Se destruye el array $_POST que ya no es necesario.
if(eregi("^[-_A-Z0-9]{3,20}$",$nick)){ // Se comprueba si el nick es valido.
/// SQL /////////////////////////////////////////////////////////////
include("sql.php"); // Conexion a la BD.
$resp = mysql_query("SELECT id_usuario,nick,pass,intentos FROM usuarios WHERE nick='$nick' LIMIT 1;",$conexion);
/////////////////////////////////////////////////////////////////////
if(mysql_num_rows($resp) == 1){ // Si existe tal usuario ...
$row = mysql_fetch_assoc($resp);
if($row['intentos'] < 5){ // ... se comprueba si tiene menos intentos de conexion del maximo permitido y ...
if($row['pass'] == $pass ){ // ... se comprueba la contrseña del usuario con la contrseña enviada.
session_start(); // Inicio de sesion.
/////////////////////////////////////////////////////////
$_SESSION['inicio'] = time();
$_SESSION['id_usuario'] = mysql_result($resp,0,"id_usuario");
$_SESSION['nick'] = mysql_result($resp,0,"nick");
/////////////////////////////////////////////////////////
mysql_query("UPDATE usuarios set u_conexion='$_SESSION[inicio]', intentos=0 WHERE nick='$nick' LIMIT 1");
/////////////////////////////////////////////////////////
header("Location: ../index.php");
} else { // si la contrseña no coincide, se aumenta los intentos en +1.
mysql_query("UPDATE usuarios SET intentos=intentos+1 WHERE nick='$nick' LIMIT 1");
echo "Error: Contraseña incorrecta";
}
} else { echo "Error: Demasiados intentos de conexion"; } // Supera el maximo de intentos permitidos.
} else { echo "Error: ".$nick." no existe en la BD"; } // Si no existe tal usuario.
} else { echo "Error: Nick no valido."; // Nick no valido.
} else { header("Location: ../index.php"); }
?>