PHP - Inicio de sesión por Roles

 
Vista:
sin imagen de perfil
Val: 15
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Inicio de sesión por Roles

Publicado por Cristian (6 intervenciones) el 05/04/2020 10:34:58
hola soy nuevo en esto de programar en PHP, y quisiera saber si me pueden ayudar en un login que tenga un inicio de sesión dependiendo del rol a continuación adjunto mi codigo.

desde ya muchas gracias.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
 
session_start();
 
$errores ='';
 
if ($_SERVER['REQUEST_METHOD'] == 'POST' ){
    $usuario = filter_var(strtolower($_POST['usuario']), FILTER_SANITIZE_STRING);
    $password = $_POST['password']  ;
    $password = hash('sha512', $password);
 
    try {
        $conexion = new PDO('mysql:host=localhost;dbname=noc', 'root', '');
    } catch (PDOException $e) {
        echo "Error:" . $e->getMessage();
 
    }
 
    $statement = $conexion->prepare('
    SELECT * FROM usuario WHERE usuario = :usuario AND pass = :password'
                                   );
 
    $statement->execute(array(
    ':usuario' => $usuario,
    'password' => $password
    ));
 
    $resultado = $statement ->fetch();
    //Verificar si el usuario existe en la BD
    //var_dump($resultado);
 
    if ($resultado !== false){
        $_SESSION ['usuario'] = $usuario;
        //header ('Location: home.php');
        echo  "<script type=text/javascript>alert('Bienvenido!'); window.location='home.php?';</script>";
 
    }else {
        $errores .= '<li> Datos Incorrectos</li> ';
    }
 
 
}
require 'views/index.view.php';
require 'functions.php';
 
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Inicio de sesión por Roles

Publicado por Julio (830 intervenciones) el 05/04/2020 11:08:41
Hola.

En primer lugar, si quieres roles, tendrás que guardarlos en algún lado, ¿no? Necesitas crear un campo nuevo en la base de datos donde guardes el rol de cada usuario. Viendo tu código, imagino que no lo tienes creado, ¿no?

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 15
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Inicio de sesión por Roles

Publicado por Cristian (6 intervenciones) el 05/04/2020 11:12:50
Si, ya la cree le puse "tipoUsuario"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Inicio de sesión por Roles

Publicado por Julio (830 intervenciones) el 05/04/2020 11:20:25
¿Entonces qué quieres hacer exactamente?

Si ya tienes el rol, cuando te traigas al usuario ya tienes su rol. Guárdalo en $_SESSION['rol'] por ejemplo y ya tienes el rol mientras el usuario esté conectado. Utilizando $_SESSION['rol'] podrás permitirle acceso adonde quieras o ver trozos donde quieras.

¿O tienes algún otro problema?

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 15
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Inicio de sesión por Roles

Publicado por Cristian (6 intervenciones) el 05/04/2020 11:26:18
Estimado Gracias por su ayuda, lo que estoy intentando realizar es que ejemplo cuando inicie sesión si es el Administrador que pueda ver menús para modificar, eliminar e insertar, en cambio si es un usuario "normal", que solo pueda leer y modificar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Inicio de sesión por Roles

Publicado por Julio (830 intervenciones) el 05/04/2020 11:29:45
Ok, pues lo que te comentaba. Guarda el rol en $_SESSION['rol'] (o $_SESSION['tipoUsuario'] si quieres coherencia con tu base de datos) y, lo que quieras que vea, por ejemplo, sólo el administrador, hazlo con un if.

1
2
3
if ($_SESSION['rol'] == 'administrador') {
    ...
}

Si estás empezando en PHP, puedes pasarte por mi blog y suscribirte. Verás en el índice de contenidos todo lo que está publicado y lo que viene, e igual puede ayudarte en algunas cosas.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 15
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Inicio de sesión por Roles

Publicado por Cristian (6 intervenciones) el 08/04/2020 18:36:00
hola nuevamente, sabes sigo con el mismo problema intente hacerlo de la forma que me dices pero no me resulta

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
session_start();
 
$errores ='';
 
 
if ($_SERVER['REQUEST_METHOD'] == 'POST' ){
    $usuario = filter_var(strtolower($_POST['usuario']), FILTER_SANITIZE_STRING);
    $password = $_POST['password']  ;
    $password = hash('sha512', $password);
    $tipoUsuario='SUPERVISOR';
 
    try {
        $conexion = new PDO('mysql:host=localhost;dbname=noc', 'root', '');
    } catch (PDOException $e) {
        echo "Error:" . $e->getMessage();
 
    }
 
    $statement = $conexion->prepare('
    SELECT * FROM usuario WHERE usuario = :usuario and pass = :password  and tipoUsuario = :tipoUsuario '
                                   );
 
    $statement->execute(array(
    ':usuario' => $usuario,
    'password' => $password,
    'tipoUsuario' => $tipoUsuario
    ));
 
    $resultado = $statement ->fetch();
    //Verificar si el usuario existe en la BD
    //var_dump($resultado);
 
    if ($resultado !== false){
        if($_SESSION ['tipoUsuario'] = 'SUPERVISOR'){
 
        echo  "<script type=text/javascript>alert('Bienvenido Administrador!'); window.location='home.php?';</script>";
  }else{
 
    echo  "<script type=text/javascript>alert('Bienvenido Back Office!'); window.location='home.php?';</script>";
  }
    }else {
        $errores .= '<li> Datos Incorrectos</li> ';
    }
 
 
}
require 'views/index.view.php';
require 'functions.php';
 
?>


agradeceria mucho tu ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Inicio de sesión por Roles

Publicado por Julio (830 intervenciones) el 08/04/2020 19:24:16
Hay varias cosas ahí. Por partes:

1
2
3
4
5
$tipoUsuario='SUPERVISOR';
 
$statement = $conexion->prepare('
SELECT * FROM usuario WHERE usuario = :usuario and pass = :password and tipoUsuario = :tipoUsuario '
);

Si buscas siempre usuarios sólo que sean supervisores, nunca vas a poder conectar de otra forma que no sea siendo supervisor. Así que no debes buscar todos los usuarios, sino el que se conecta simplemente. Luego ya comprobarás qué tipo es.

1
2
3
4
5
$statement->execute(array(
':usuario' => $usuario,
'password' => $password,
'tipoUsuario' => $tipoUsuario
));

Si has puesto :password y :tipoUsuario pero luego pones password y tipoUsuario sin los dos puntos, te va a dar error (aunque tipoUsuario ya hemos quedado que debes quitarlo por lo comentado en el punto anterior).

1
if($_SESSION ['tipoUsuario'] = 'SUPERVISOR'){

Primer error: una comparación no es con =, es con == (o también con === si hay comparación de tipos añadida). Si pones sólo =, estás asignando y no es correcto porque te va a devolver siempre que es cierto en esta ocasión.

Segundo, ¿por qué comparas $_SESSION['tipoUsuario']? No has guardado nada en esa variable de sesión en ningún momento, nunca va a existir. Deberías hacer esta comprobación con los datos que te vienen de la base de datos.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 15
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Inicio de sesión por Roles

Publicado por Cristian (6 intervenciones) el 10/04/2020 06:14:32
llevo días intentado resolver pero no me resulta, gracias por tu ayuda!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Inicio de sesión por Roles

Publicado por Julio (830 intervenciones) el 10/04/2020 10:26:55
¿Y has podido solucionarlo?

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 15
Ha aumentado su posición en 14 puestos en PHP (en relación al último mes)
Gráfica de PHP

Inicio de sesión por Roles

Publicado por Cristian (6 intervenciones) el 11/04/2020 04:40:09
la verdad que si, encontré por ahí un tutorial y me ayudo mucho a solucionar lo de los roles, gracias a usted por su tiempo y su ayuda!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar