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