PHP - Ayuda con la validacion de un login con privilegios de usuario

 
Vista:
sin imagen de perfil

Ayuda con la validacion de un login con privilegios de usuario

Publicado por Jose (3 intervenciones) el 21/03/2018 06:37:31
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:

Captura-de-pantalla-17

El inicio de sesion esta bien, procesa la contraseña encriptada 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
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 jose carlos
Val: 134
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Ayuda con la validacion de un login con privilegios de usuario

Publicado por jose carlos (48 intervenciones) el 21/03/2018 21:22:56
Te recomiendo que utilices esto no un try cach
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
52
<?php
require 'connect.inc.php';
 
session_start();
if(!empty($_POST['user'])&&!empty($_POST['pass']))
{
	if(isset($_POST['user'])&&isset($_POST['pass']))
	{
		//lvariables en las que pondremos en la pase de datos
 
		$user_name = $_POST['user'];
		$pass_user =  $_POST['pass'];
 
		$query = "SELECT * FROM customers WHERE `usuario_pass`='$user_name' AND `password`='$pass_user'";
 
		$result = $mysqli->query($query);
 
		if (!$result){
			echo "<center> <p style='padding: 5px;background-color:red;'> Something went wrong.</p>	</center>";
 
		}
		while($row = mysqli_fetch_array($result))
		{
			$row['tipo_usuario']
 
			if (($row['tipo_usuario']=="admin") {
 
				echo "Bienvenido admin ";
 
				header("location: ./admin_informacion.php");
			} else {
 
 
				 echo "Bienvenido user ";
 
				header("location: ./usuario_informacion.php");
 
			}
		}
 
		else if($count==0)
		{
			echo "<center> <p style='padding: 5px;background-color:red;'> Usuario o contraseña incorrecta. Please try Again.</p>	</center>";
		}
		else
		{
			echo "<center> <p style='padding: 5px;background-color:red;'> Something went wrong.</p>	</center>";
		}
	}
}
 
?>


es una manera correcta solo mas validar quien es tipo usuario y usuario
espero que te ayude
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

Ayuda con la validacion de un login con privilegios de usuario

Publicado por Jose (3 intervenciones) el 22/03/2018 00:21:54
Hola! gracias por comentar. Por que no try catch? como mencione no se mucho de programacion. En mi login funciona todo bien, solo le faltaria otro tipo de validaciones. Pero por ahora me preocupa el direccionamiento dependiendo del tipo de usuario, use el que me acabas de dar incluyendo el while dentro del if de la linea 23 pero no me funciono. Quedo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
if ($contador>0) {
 
    while ($registro) {
        $registro['tipo_cuenta'];
        if ($registro['tipo_cuenta']=='Administrador') {
            header("location:administrador.php");
        }else {
            header("location:usuario.php");
        }
    }
 
}else{
    header("location:index.php");
}

No se si es que lo adapte mal, o no funcionaria dentro de ese if($contador>)0
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 jose carlos
Val: 134
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Ayuda con la validacion de un login con privilegios de usuario

Publicado por jose carlos (48 intervenciones) el 22/03/2018 05:34:27
contactame [email protected]
es que aqui no es preciso poner cosas ya remaste rice el código

el if es una de las mejores maneras
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
$query = "SELECT * FROM customers WHERE `acc_no`='$acc_id' AND `email_id`='$email_id' AND `password`='$password'";
 
$result = $mysqli->query($query);
 
if (!$result){
	echo "<center> <p style='padding: 5px;background-color:red;'> ha ocurrido un problema.</p>	</center>";
 
}
while($row = mysqli_fetch_assoc($result))
{
	$first_name = $row['first_name'];
	$last_name = $row['last_name'];
	$mobile_no = $row['mobile_no'];
	$doj = $row['doj'];
 
 
	$tipo_usuario= $row['tipo_usuarioj'];
 
 
  if ($tipo_usuario='usuario') {
    header("location: ./usuario_informacion.php");
  }else {
    header("location:./admin_informacion.php");
  }
}
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

Ayuda con la validacion de un login con privilegios de usuario

Publicado por Jose (3 intervenciones) el 22/03/2018 22:00:59
Ya encontré la solución, gracias a ti y a otras personas di con la solución. El while que usaba para el password verify no era necesario.
El codigo quedó así:

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
<?php
  require("config.php");
session_start();
  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));
$registro=$resultado->fetch(PDO::FETCH_ASSOC);
 
if ($registro) { //Retorna TRUE en caso de encontrar datos referentes al USUARIO
         if (password_verify($password,$registro['contrasena'])) {//Validamos que coincidan las Contraseñas
 
            if ($registro['tipo_cuenta'] == 'Administrador') {//Validamos los Tipos de Cuenta del Usuario
 
                $_SESSION['usuario'] = $usuario;
 
                header("Location:administrador.php");
 
            } else if($registro['tipo_cuenta'] == 'Usuario'){
 
                $_SESSION['usuario'] = $usuario;
 
                header("Location:usuario.php");
            }
 
         } else {
            echo "Contraseña incorrecta";
         }
 
} else {
    echo "Usuario no existe";
}
 
  } catch (Exception $e) {
    die(" Error: " . $e->getMessage());
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar