Nueva pregunta

Pregunta:

Fecha: 28-06-2018 13:07:00 (En Español)

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.
Etiquetas: Desarrollo - PHP - Pregunta - Sesión 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
 
frjcbbae garagebible.com