PHP - Como poner un usuario administrador y un usuario normal con php y mysql

 
Vista:
sin imagen de perfil

Como poner un usuario administrador y un usuario normal con php y mysql

Publicado por Adianec (6 intervenciones) el 30/05/2017 17:05:21
Hola me gustaría que por favor me ayudaran, estoy haciendo un trabajo de curso y me piden que ponga un rol de usuario administrador y un usuario normal, pero los codigos que tengo no me dan ningun error y tampoco funcionan. Por favor alguien que me ayude.
Hice dos tablas, una se llama usuarios y la otra administrador, y tienen un idusuario en cada una.
En la pagina principal tengo este formulario para que el usuario se loguee:

1
2
3
4
5
6
7
8
9
10
11
12
<form id="formr" method="post" action="../controlc/AdministrarSesiones.php" class="login" >
    <fieldset>
        <label for="text1">Usuario</label><br />
        <input id="text1" type="text" name="usuario" required/><br />
        <label for="text2">Contrase&ntilde;a</label><br />
        <input id="text2" type="password" name="password"  maxlength="15"
        onblur="return validar(this.value)" required/>
        <br />
        <br />
        <input type="submit" id="login"  name="login" value="" />
    </fieldset>
</form>

En la pagina de AdministrarSesiones tengo lo siguiente:
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();
include_once "../includes/conexion2.php";
 
//Recibimos las dos variables
$usuario=$_POST["idusuario"];
$password=$_POST["password"];
 
/* Realizamos una consulta por cada tabla para buscar en que tabla se encuentra 
el usuario que está intentando acceder */
$user = mysql_query("SELECT * FROM usuarios WHERE user = '$usuario' AND password = '$password'");
$admin = mysql_query("SELECT * FROM administradores WHERE admin = '$usuario' AND password = '$password'");
/* Sabemos que en el caso que exista el usuario se encontrará en una de estas tres tablas,
por lo tanto se guardará en alguno de nuestras tres variables que guardan nuestra consulta */
 
/* Ahora comprobamos que variable contiene al usuario*/
if(empty($user))
{
/* Si entra en este if significa que el que intenta acceder es un usuario, por lo tanto le creamos una sesión */
    session_start();
 
    $_SESSION['user']="$usuario";
 
/* Nos dirigimos al espacio de los usuarios usando header que nos redireccionará a la página que le indiquemos */
    header("Location: ../vista/Inicio.php");
 
/* terminamos la ejecución ya que si redireccionamos ya no nos interesa seguir ejecutando código de este archivo */
    exit();
}
/* Ahora comprobamos si el que intenta acceder es un administrador */
else if(empty($admin))
{
    session_start();
    $_SESSION['admin']="$usuario";
    header("Location: ../vista/InicioAdmin.php");
    exit();
}
 
else
{
/* Si el usuario no se encuentra en ninguna de las tres tablas imprime el siguiente mensaje */
   $mensajeaccesoincorrecto = "El usuario y la contraseña son incorrectos, por favor vuelva a introducirlos.";
   echo $mensajeaccesoincorrecto;
}
 
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 3.943
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Como poner un usuario administrador y un usuario normal con php y mysql

Publicado por xve (6935 intervenciones) el 30/05/2017 17:40:59
Hola Adianec, entiendo que el problema es que no visualizas los errores, por eso no visualizas nada por pantalla.

Solo puedes definir: session_start(); una vez al inicio de la pagina.

Si revisas el log del servidor web, seguramente te indicara los errores.
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

Como poner un usuario administrador y un usuario normal con php y mysql

Publicado por Adianec (6 intervenciones) el 30/05/2017 18:32:59
Mira xve he arreglado algunos errores y ahora cuando me logueo entra con los usuarios que estan en la base de datos pero siempre entra directo a la pagina de usuario, parece que hay algun problema a la hora de poner el if y else, pero no se bien cual podria ser.
Este es el codigo como va quedando...
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
<?php
session_start();
include_once "../includes/conexion2.php";
 
//Recibimos las dos variables
$usuario =$_POST["usuario"];
$password =$_POST["password"];
 
/* Realizamos una consulta por cada tabla para buscar en que tabla se encuentra 
el usuario que está intentando acceder */
$user = mysql_query("SELECT usuario,password FROM usuarios WHERE user = '$usuario' AND password = '$password'");
$admin = mysql_query("SELECT usuario,password FROM administradores WHERE admin = '$usuario' AND password = '$password'");
/* Sabemos que en el caso que exista el usuario se encontrará en una de estas tres tablas,
por lo tanto se guardará en alguno de nuestras tres variables que guardan nuestra consulta */
 
 /* Ahora comprobamos que variable contiene al usuario*/
 if(empty($user))
{   /* Si entra en este if significa que el que intenta acceder es un usuario, por lo tanto le creamos una sesión */
  $_SESSION['user']="$usuario";
/* Nos dirigimos al espacio de los usuarios usando header que nos redireccionará a la página que le indiquemos */
    header("Location: ../vista/Inicio.php");
/* terminamos la ejecución ya que si redireccionamos ya no nos interesa seguir ejecutando código de este archivo */
    exit();
}
/* Ahora comprobamos si el que intenta acceder es un administrador */
else if(empty($admin))
{
   $_SESSION['admin']="$usuario";
   header("Location: ../vista/InicioAdmin.php");
   exit();
}
else
{
/* Si el usuario no se encuentra en ninguna de las dos tablas imprime el siguiente mensaje */
   $mensajeaccesoincorrecto = "El usuario y la contraseña son incorrectos, por favor vuelva a introducirlos.";
   echo $mensajeaccesoincorrecto;
}
?>
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

Como poner un usuario administrador y un usuario normal con php y mysql

Publicado por Adianec (6 intervenciones) el 31/05/2017 15:11:04
Ya logré que me funcionara ahora si quedó perfecto aquí les dejo el codigo por si alguien lo necesita.
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
<?php
include_once "../includes/conexion2.php";
session_start();
//Recibimos las dos variables
var_dump("$usuario.","$password.");
$usuario =$_POST["usuario"];
$password =$_POST["password"];
/* Realizamos una consulta por cada tabla para buscar en que tabla se encuentra
el usuario que está intentando acceder */
$resultado_admin = mysql_query("SELECT usuario,password FROM administradores WHERE usuario = '".$usuario."' AND password = '".$password."'");
$resultado_user = mysql_query("SELECT usuario,password FROM usuarios WHERE usuario = '".$usuario."' AND password = '".$password."'");
if (!$resultado_user || !$resultado_admin) {
    echo "Error de BD, no se pudo consultar la base de datos\n";
    echo "Error MySQL: '". mysql_error()."'";
    exit;
}
$user = mysql_fetch_array($resultado_user);
$admin = mysql_fetch_array($resultado_admin);
/* Sabemos que en el caso que exista el usuario se encontrará en una de estas dos tablas,
por lo tanto se guardará en alguno de nuestras dos variables que guardan nuestra consulta */
//print($user) 
  /* Ahora comprobamos que variable contiene al usuario*/
 if($user['usuario'] == $usuario){
    $_SESSION['user']= $user['usuario'];
    header("Location: ../vista/Inicio.php");
    exit();
}else if($admin['usuario'] == $usuario) {
   $_SESSION['admin']= $admin['usuario'];
   header("Location: ../vista/InicioAdmin.php");
   exit();
}else {
/* Si el usuario no se encuentra en ninguna de las dos tablas imprime el siguiente mensaje */
    $mensajeaccesoincorrecto = "El usuario y la contraseña son incorrectos, por favor vuelva a introducirlos.";
  echo $mensajeaccesoincorrecto;
}
?>
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

Como poner un usuario administrador y un usuario normal con php y mysql

Publicado por Raidel (1 intervención) el 31/05/2017 19:07:16
Hay otras maneras de hacer esto por supuesto, por jemplo en una sola tabla usuario con un campo q lo identifique como administrador.
O agregando un tabla rol y otra usuario rol un tipico diseño de seguridad. Pero claro eso tambien resuleve tu problema

saludos
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: 63
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

Como poner un usuario administrador y un usuario normal con php y mysql

Publicado por Monica (33 intervenciones) el 23/07/2019 12:22:16
Hola,
Como tu dices yo en mi caso tengo una tabla tipo_usuarios con 4 tipos de usuarios. A ver si me pudieseis ayudar

El formulario de login sería
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
<form id="loginform" class="form-horizontal" role="form" action="<?php $_SERVER['PHP_SELF'] ?>" method="POST" autocomplete="off">
 
    <div style="margin-bottom: 25px" class="input-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
    <input id="usuario" type="text" class="form-control" name="usuario" value="" placeholder="Zona de Ventas" required>
 
    </div>
 
    <div style="margin-bottom: 25px" class="input-group">
        <span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
        <input id="password" type="password" class="form-control" name="password" placeholder="password" required>
    </div>
 
    <div style="margin-top:10px" class="form-group">
        <div class="col-sm-12 controls">
            <button id="btn-login" type="submit" class="btn btn-success">Iniciar Sesi&oacute;n</a>
        </div>
    </div>
 
    <div class="form-group">
        <div class="col-md-12 control">
            <div style="border-top: 1px solid#888; padding-top:15px; font-size:85%" >
                No tienes una cuenta! <a href="registro.php">Registrate aquí</a>
            </div>
        </div>
    </div>
</form>
<?php echo resultBlock($errors); ?>

Tengo una función para el login que sería

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
function login($usuario, $password)
{
    global $mysqli;
 
    $stmt = $mysqli->prepare("SELECT id, id_tipo, password FROM usuarios WHERE usuario = ? || correo = ? LIMIT 1");
    $stmt->bind_param("ss", $usuario, $usuario);
    $stmt->execute();
    $stmt->store_result();
    $rows = $stmt->num_rows;
 
    if($rows > 0) {
 
        if(isActivo($usuario)){
 
            $stmt->bind_result($id, $id_tipo, $passwd);
            $stmt->fetch();
 
            $validaPassw = password_verify($password, $passwd);
 
            if($validaPassw){
 
                lastSession($id);
                $_SESSION['id_usuario'] = $id;
                $_SESSION['tipo_usuario'] = $id_tipo;
 
                header("location: usuario.php");
            } else {
 
                $errors = "La contrase&ntilde;a es incorrecta";
            }
        } else {
            $errors = 'El usuario no esta activo';
        }
    } else {
        $errors = "El nombre de usuario o contrase&ntilde;a no existen";
    }
    return $errors;
}

Pero no me lleva a cada usuario a su panel, si no que los lleva a todos a la misma página. COmo haría en esta función para llevar a cada uno a su panel?
tipo_usuario
1 - Adminstrador
2 - Usuario
3 - VL
4 - VB

y una vez se loguean, sería algo así?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
	session_start();
        require 'funcs/funcs.php';
        require 'funcs/conexion.php';
 
 
 
        if(!isset ($_SESSION["id_usuario"])) {
            header("location: index.php");
        }
 
 
       	$idusuario = $_SESSION['id_usuario'];
        $tipo_usuario = $_SESSION['id_tipo']==3;
 
        $sql = "SELECT id, nombre, id_tipo FROM usuarios WHERE id = '$idusuario'";
        $result = $mysqli->query($sql);
        $row = $result->fetch_assoc();
 
?>
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

Como poner un usuario administrador y un usuario normal con php y mysql

Publicado por Lorenzo (3 intervenciones) el 02/12/2019 19:19:04
Agrega los condicionales tu funcion 'login' y completalo segun tu necesidad ...seguro que funciona...


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
if($validaPassw){
 
                lastSession($id);
                $_SESSION['id_usuario'] = $id;
                $_SESSION['tipo_usuario'] = $id_tipo;
 
                if($_SESSION['tipo_usuario'] == 3){
 
                    header("location: ../usuarios/");
 
                } else if($_SESSION['tipo_usuario'] == 2){
 
                    header("location: ../suprvisores);
                } else if($_SESSION['tipo_usuario'] == 1){
                    header("location: ../admin/index.php");
                } else {
                    $errors = "La contrase&ntilde;a es incorrecta"
                }
            } else {
            $errors = 'El usuario no esta activo';
            }
        } else {
        $errors = "El nombre de usuario o correo electr&oacute;nico no existe";
    }
    return $errors;
}
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