Pregunta:
Fecha: 28-06-2018 13:07:00
(En Español)
1.- Archivo de Login
2.- Validación del Login
No se que estaré haciendo mal, por favor se les agradece sus comentarios gracias. Votos: 0 - Respuestas: 4 - Vistas: 16 Compartir en: Google Facebook Twitter LinkedIn Link
Problemas al validar mi inicio de sesión (sha512)[Resuelta]
Hola amigos saludos a todos los miembros de phpcentral, en esta oportunidad quisiera pedirles sus apoyos en un problema que tengo: estoy usando encriptación sha512 para las contraseñas de los usuarios, pero tengo problemas cuando quiero iniciar sesión con el usuario creado, les comparto los códigos:1.- Archivo de Login
<div class="login-box">
<div class="col-md-12<">
<div class="panel panel-info">
<div class="panel-heading">
<p>Ingrese sus datos de acceso</p>
</div>
<div class="login-box-body">
<form action="./?action=acceso&op=inicio" method="post">
<div class="row">
<div class="col-sm-12 col-md-10 col-md-offset-1 ">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">
<i class="fa fa-envelope" aria-hidden="true"></i>
</span>
<input type="email" name="email" class="form-control">
</div>
</div>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">
<i class="fa fa-key" aria-hidden="true"></i>
</span>
<input type="password" name="password" class="form-control" placeholder="Contraseña">
</div>
</div>
<div class="form-group">
<input type="submit" class="btn btn-lg btn-info btn-block" value="Acceder">
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
2.- Validación del Login
<?php
if (isset($_GET["op"]) && $_GET["op"]=="inicio"){
$email = $_POST["email"];
$password = hash('sha512', $_POST['password']);
if ($_POST["email"]!=""&&$_POST["password"]!=""){
$db = new Database();
$con = $db->connect();
$sql= "SELECT * from usuario where email=$email AND password=hash(sha512, $password) AND activo=1";
$query = $con->query($sql);
$user = null;
if ($query){
$user = $query->fetch_array();
if($user!=null){
$_SESSION["user_id"]=$user["user_id"];
Core::redir("./");
}
}
if($user==null){
$error=hash('sha512',("cuenta inactiva"));
Core::alert("Los Datos Ingresados son Incorrectos");
Core::redir("./");
}
}else{
$invalid=hash('sha512',("La contraseña y Correo es invalido"));
Core::alert("Ingrese su Correo y Contraseña");
Core::redir("./");
}
}
?>
No se que estaré haciendo mal, por favor se les agradece sus comentarios gracias. Votos: 0 - Respuestas: 4 - Vistas: 16 Compartir en: Google Facebook Twitter LinkedIn Link
Respuestas:
-
Fecha: 29-06-2018 19:51:46 Hola Joel, en el query select, tendria que ir unicamente $password.
$sql= "SELECT * from usuario where email=$email AND password=$password AND activo=1";
Votos: 0 - Link respuesta -
Fecha: 01-07-2018 18:00:49 Hola buenas noches, he realizo el cambio que me indico pero cuando hago el login, me sale el error de:
Core::alert("Los Datos Ingresados son Incorrectos");Votos: 0 - Link respuesta -
Fecha: 02-07-2018 07:35:05 @Capzzula: cuidado con las comillas... Puedes tener varios problemas.
Para empezar recomendaría un SQL tipo:
$sql= "SELECT * from usuario where email='$email' AND password='$password' AND activo=1";
Siendo que tanto $email como $password son strings, más vale tenerlos bien entrecomillados.
Por otro lado, esto puede conducir a problemas de seguridad (Si el string $email o $password están escritos maliciosamente podrían resultar en un ataque por inyección de SQL).
Tengo dos sugerencias:
1 - Usar PDO con prepared statements para evitar el problema de la inyección de SQL (Más info por acá).
2 - Usar las funciones propias de PHP (password_hash y password_verify) para manejar las contraseñas. (Más info acá) Votos: 0 - Link respuesta -
Fecha: 02-07-2018 12:22:32 ok, comprendo muchas gracias por sus comentarios se les agradece a todos Votos: 0 - Link respuesta
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
