Acabo de realizar el sistema de Login para un sistemita en Php, pero necesito saber si es "seguro".
Me dan una mano?
Una funcion para evitar el sqlInjection:
Código PHP:
/** Escapa la cadena, verificando si "Comillas maginas" esta activo o no. */
function mysql_escape($cadena)
{
$cadena = trim($cadena);
if(get_magic_quotes_gpc() != 0)
{
$cadena = stripslashes($cadena);
}
return mysql_real_escape_string($cadena);
}
Este es el formulario donde pones el email y la contraseña:
Código PHP:
echo "<form action=\"scripts/iniciar-sesion.php\" method=\"post\">
<table align=\"center\" width=\"700\" border=\"1\">
<tr>
<td colspan=\"2\"><p align=\"center\"><b>Inicia Sesion:</b></p></td>
</tr>
<tr>
<td>Email:</td>
<td><input type=\"text\" name=\"email\" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type=\"password\" name=\"password\" /></td>
</tr>
<tr>
<td colspan=\"2\"><p align=\"center\"><input type=\"submit\" value=\"Enviar\" /></p></td>
</tr>
</table>
</form>";
El codigo que verifica si la contraseña el usuario son correctos:
Código PHP:
//Para utilizar las variables de sesion:
session_start();
//incluyo el archivo de conexion a la base de datos:
include '../db/base-de-datos.php';
//incluyo para poder usar la funcion de escape:
include '../funciones/funciones-generales.php';
include '../funciones/funciones-sql.php';
//Variables que vienen del formulario limpiadas de caracteres incorrectos:
$email = mysql_escape($_POST['email']);
$password = mysql_escape($_POST['password']);
$password = md5($password);
//VALIDAMOS LOS FORMULARIOS:
//Controlamos que los campos obligatorios no esten vacios:
if ($email == '')
{
$_SESSION['mensaje'] = "Debe completar el campo Email.<br / > <br />
<input type= \"button\" value=\"Volver atrás\" onclick=\"history.back()\">" ;
header ("Location: ../mensaje.php");
exit();
}
elseif($password == '')
{
$_SESSION['mensaje'] = "Debe completar el campo Password. <br / > <br />
<input type= \"button\" value=\"Volver atrás\" onclick=\"history.back()\">" ;
header ("Location: ../mensaje.php");
exit();
}
else
{
//SI TODO ESTA BIEN:
//El query que se ejecutara en la base de datos:
$cadena = "select * from usuarios where emailUsuario = '$email' and passwordUsuario = '$password'";
$ejecutarSql = mysql_query($cadena);
//Ejecuto el Query:
//Si el usuario y password son correctos:
//fetch_array retorna los datos de las filas en un vector, sino da false.
if ($fila = mysql_fetch_array($ejecutarSql))
{
//Pongo la variable de sesion en True asiganandole el ID del usuario actual.
//Con el Id de usuario podemos actualizar o ver cualquier dato del usuario.
$_SESSION['usuarioRegistrado'] = $fila['idUsuario'];
//Si el usuario es administrador...
if($fila['esAdminUsuario'] == 1)
{
$_SESSION['usuarioAdmin'] = $fila['idUsuario'];
//Redirecciono al panel de control
header ("Location: ../admin.php");
exit();
}
}
else
{
$_SESSION['mensaje'] = "Error! Usuario o contraseña incorrecta. <br /> <br / > <br />
<input type= \"button\" value=\"Volver atrás\" onclick=\"history.back()\">" ;
header ("Location: ../mensaje.php");
}
}
Por ultimo para verificar si el usuario es Administrador hago asi:
Código PHP:
//Esto me dice si es Usuario Registrado...
$idUsuarioRegistrado = $_SESSION['usuarioRegistrado'];
//Esto me dice si el usuario registrado es Administrador...
$idAdmin = $_SESSION['usuarioAdmin'];
//SI EL USUARIO ES ADMINISTRADOR:
if($idAdmin)
{
}
//SI EL USUARIO NO ES ADMINISTRADOR:
else
{
}
Un abrazo a todos!