Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: jaoc6 en 21 Marzo 2018, 22:05 pm



Título: Ayuda con la validacion de un login con privilegios de usuario
Publicado por: jaoc6 en 21 Marzo 2018, 22:05 pm
Hola gente! Quiero hacer un login con privilegios de usuarios, tengo una base de datos llamada login, con una tabla "cuentas" con los campos "usuario" , "contraseña" y "tipo_cuenta". En los formularios para iniciar sesion solo tengo 2 inputs para el usuario y la contraseña. Las contraseñas de las cuentas que he creado las encripte con password_hash() y el tipo de usuario los ingrese con un select (Usuario y administrador).

Este es el archivo que procesa los datos enviados por el formulario:
Código:
<?php
  require("config.php");


  try {
  $usuario=htmlentities(addslashes($_POST['user']));
  $password=htmlentities(addslashes($_POST['pass']));
  $contador=0;

  $conexion = new PDO ("mysql:host=$host; dbname=$dblogin", "$dbusuario", "$contrasenadb");
  $conexion->setAttribute (PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  $sql= "SELECT * FROM cuentas where usuario= :user";
  $resultado=$conexion->prepare($sql);
  $resultado->execute(array(":user"=>$usuario));

  while ($registro=$resultado->fetch(PDO::FETCH_ASSOC)) {

    if (password_verify($password, $registro['contrasena'])) {
      $contador++;
    }
  }
  if ($contador>0) {

    session_start();
$_SESSION["usuario"]=$usuario;

header("location:administrador.php");

  }else {
    header("location:index.php");
  }

  } catch (Exception $e) {
    die(" Error: " . $e->getMessage());
  }

El inicio de sesion esta bien, procesa la contraseña cifrada pero me gustaria poder que inicie sesion y lo direccionara a una pagina diferente dependiendo del tipo_cuenta que tenga el usuario en la base de datos. He probado diferentes if else dentro del "if(contador>0)" de la linea 23 pero nada me resulta.
Quiero aclarar que soy nuevo en esto y me he guiado de este canal : https://www.youtube.com/watch?v=XfOxyQcbawc&list=PLU8oAlHdN5BkinrODGXToK9oPAlnJxmW_&index=69

Espero haberme explicado bien, sería de mucha ayuda sus sugerencias.Gracias


Título: Re: Ayuda con la validacion de un login con privilegios de usuario
Publicado por: #Aitor en 23 Marzo 2018, 06:32 am
No sé que tipo será Tipo_cuentas, string, entero etc... Pero yo probaría a traer el valor de tipo_cuentas dónde usuario fuera usuario, dentro de un switch, y dependiendo de lo que devolviese haría una cosa u otra, tal que así:

Código
  1. <?php
  2.  
  3. $resultado = $conexion->query("SELECT tipo_cuenta FROM cuentas WHERE usuario= '$user'")->fetchColumn();
  4.  
  5. switch ($resultado) {
  6.  case 'admin':
  7.    header("Location:Admin.php");
  8.    break;
  9.  
  10.  case 'moderador':
  11.    header("Location:Moderador.php");
  12.    break;
  13.  
  14.  default:
  15.    header("Location:Index.php");
  16.    break;
  17. }
  18.  
  19. ?>
  20.