entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

Login para distintos usuarios

Buenas, tengo una duda, estoy haciendo un login para distintos usuarios, he hecho dos tablas, una de usuarios y otra de admin.
Tengo la duda de como implementarlo en php, he intentado hacer esto, pero no me funciona.

<?php session_start();
if (isset ($_SESSION['usuario'])){
    header('Location: index.html');
}
if ($_SERVER['REQUEST_METHOD'] =='POST') {
    $email = filter_var(strtolower($_POST['email']), FILTER_SANITIZE_STRING);
    $password = $_POST['password'];
    $password = hash('sha512', $password);
    try{
        $conexion = new PDO('mysql:host=localhost;dbname=drivers_parade_club', 'root', '') ;
     }catch (PDOException $e) {
         echo "Error". $e->getMessage();;
     }
     $statement = $conexion->prepare ('SELECT * FROM usuarios WHERE email = :email AND pass = :password');
     $statement = $conexion->prepare ('SELECT * FROM admin WHERE email = :email AND pass = :password');
     $statement->execute(array(
         ':email'=> $email,
         ':password'=>$password

     ));
     $resultado = $statement->fetch();
     if ($resultado !==false) {
         $_SESSION ['usuario'] = $email;
         header('Location: index.html');

     }elseif($resultado !==false){
        $_SESSION ['usuario'] = $email;
        header('Location: dashboard.html'); 
     }else {
         $errores .= '<li> Datos incorrectos</li>';
     }
}
?>

2votos

cobasESP comentado

Para que haces esto exactamente?? supongo que para separar los usuarios normales de los admins, para eso en la tabla usuario crea una columna permisos y con eso juegas en el código, hacer esto que tienes planteado es casi inviable yuna mala practica

1 Respuesta

1voto

Umarumm Puntos1640

una pregunta son dos tablas sin una llave que las relacione o son separadas
si están relacionadas deberías usar un inner join para traer los valores de ambas tablas si no están relacionadas porque no haces una tabla que se llame perfil por ejemplo agregas los perfiles hay como "usuario,admin etc" y haces el inner join y mandas a volar admin de esa manera solo tendrías una consulta y quedaría algo como esto

<?php
session_start();
$correo=$_POST['correo'];
    $clave=md5($_POST['clave']);
    require_once('Conexion.php');
    $conn = Conectar();

    $stmt = $conn->prepare("SELECT  id_usuario, nombre, apellido, correo, p.id_perfil, perfil FROM usuario u INNER JOIN perfil p ON p.id_perfil=u.id_perfil WHERE u.correo=:correo AND u.clave=:clave");
    $stmt->bindParam(':correo',$correo);
    $stmt->bindParam(':clave',$clave);
    $stmt->execute();

    if($stmt->rowCount()==1){
        $fila=$stmt->fetch();
        $_SESSION['idperfil']=$fila['id_perfil'];
        if($fila['id_perfil']==1)
            {header("Location: ../administrador/index.php");}
        if($fila['id_perfil']==2)
            {header("Location: ../aprendiz/index.php");}
        if($fila['id_perfil']==3)
            {header("Location: ../root/index.php");}
    }
    else{
         echo "<font color='red'>Datos No Validos</font>";
    }

?>  

1voto

flowcou comentado

Hice dos tablas, por que no sabía realmente, como hacerlo, así que hice algo para salir del paso. No están relacionadas, tengo una tabla, con usuarios y otra con usuarios2 por que al crear una tabla llamada admin o administradores me daba fallo.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta