Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => 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:
<?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_ERRMODEPDO::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 (php) [Seleccionar]

<?php

$resultado 
$conexion->query("SELECT tipo_cuenta FROM cuentas WHERE usuario= '$user'")->fetchColumn();

switch (
$resultado) {
  case 
'admin':
    
header("Location:Admin.php"); 
    break;

  case 
'moderador':
    
header("Location:Moderador.php"); 
    break;
    
  default:
    
header("Location:Index.php"); 
    break;
}

?>