Underc0de

Foros Generales => Dudas y pedidos generales => Mensaje iniciado por: DarthKenar en Marzo 05, 2018, 09:18:31 PM

Título: Problema en formulario Login (PHP)(HTML)
Publicado por: DarthKenar en Marzo 05, 2018, 09:18:31 PM
Hola a todos. Tengo un problema con un formulario (Login) en el cual necesito verificar los datos de la tabla 'usuarios'
para poder entrar. Puedo entrar correctamente pero no me verifica el tipo de usuario, ya que quiero que tenga dos caminos. Ser admin o no ser admin, y que de esta forma entre a abmadmin.php o simplemente a admin.php
Creo estar teniendo un error de logica y no logro entenderlo (tengo el cerebro quemado) pero me desespera no poder solucionarlo.

Código (php) [Seleccionar]

<?php include('conexion.php'?>
<!DOCTYPE html>
<html lang="es">
  <head>
<head>
  <title>Login</title>
  <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
     <link rel="stylesheet" href="css/estilos.css">
    <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
    <!-- Bootstrap -->
    <link href="css/bootstrap.min.css" rel="stylesheet">

    <!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
      <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
      <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
  <meta charset="utf-8">
  </head>
  <body>
    <div class="container">
     <?php
if (isset($_POST['submit'])) {
              
$usuario_nombre $_POST['usuario_login'];
              
$usuario_contrasenia $_POST['contraseña_login'];
              
$usuario_tipos $_POST['usuario_tipo'];
               
$semilla=$usuario_nombre;
      
$usuario_contrasenia=crypt($usuario_contrasenia,$semilla);//clave encriptada
      
$verificar=mysqli_query($conexion,"SELECT usuario FROM usuarios WHERE usuario='$usuario_nombre' and clave='$usuario_contrasenia'") or die (mysqli_error($conexion));

if (
mysqli_num_rows($verificar)>and ($usuario_tipos) != 'admin'){  //devuelve la cantidad de coincidencias
                 
header('Location: abm.php');}
else{
                 
header('Location: abmadmin.php');}
}
              
?>

      <form class="form-signin" action="" method="POST" >
        <h2 class="form-signin-heading">Por favor, ingrese:</h2>
        <label for="input" class="sr-only">Usuario</label>
        <input type="text" name="usuario_login" id="input" class="form-control" placeholder="Nombre de usuario" required autofocus>
        <label for="inputPassword" class="sr-only">Contraseña</label>
        <input type="password" name="contraseña_login" id="inputPassword" class="form-control" placeholder="Contraseña" required>
        <div class="checkbox">
          <label>
            <input type="checkbox" value="remember-me"> Recordarme
          </label>
        </div>
        <div>
        <button type="submit" name="submit" class="btn btn-info btn-lg">Entrar</button>
       </form>
        </div>
                <a href="index.php"><button type="submit" name="" class="btn btn-warning btn-lg">Volver</button></a>
</a>

    </div> <!-- /container -->
    <!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
    <script src="js/ie10-viewport-bug-workaround.js"></script>
  </body>
</html>


Perdon por el codigo, esta bastante sucio y desprolijo, espero que lo entiendan. (soy nuevo en esto y estoy intentando aprender).


Base de Datos(tabla usuarios) :

https://ibb.co/k0gFV7

Otra cosa un tanto extraña es que cuando me meto al login y logeo con cualquiera de estos usuarios creados en el localhost se me mete siempre y directamente al abmadmin.php (lo cual es correcto en cuando a lo establecido en el codigo por el if).

Pero cuando lo ejecuto desde la pagina web  https://ferreteriaelgrone.000webhostapp.com/ (https://ferreteriaelgrone.000webhostapp.com/)  retorna al mismo login al presionar el boton entrar. Realmente no entiendo eso.

Desde ya gracias de antemano a cualquiera que me pueda ayudar!

Título: Re:Problema en formulario Login (PHP)(HTML)
Publicado por: arthusu en Marzo 05, 2018, 11:04:02 PM
tienes mal el condicional y la consulta, y en el HTML no veo tu envio de si es admin, saludos!
Título: Re:Problema en formulario Login (PHP)(HTML)
Publicado por: xyz en Marzo 08, 2018, 10:11:00 AM
Brindo un simple ejemplo del manejo.

Código (php) [Seleccionar]
<html>
<head> <title> </title> </head>
<body>
<form name="testeo" action="#" method="post">
<label> Ingrese el nombre de usuario </label>
<input type="text" name="Usuario">
<label> Ingrese la contraseña </label>
<input type="password" name="pass">
<input type="submit" value="Login">
</form>
<body>

<?php
if ( (isset($_POST['Usuario'])) && (isset($_POST['pass'])) ){
// aqui es donde realizar la consulta a la base de datos verificando los datos que han proporcionado
}
?>

</html>


El formulario enviaría dos parametros asignados por la etiqueta name (Usuario / pass).
Del lado del servidor, procesarás esas variables, las limpiaras y realizaras la consulta que creas necesaria.

Debe ir dentro del código PHP, ahora si trabajas con MVC y POO, utilizas include/require/include_once/require_once.

//Aquí estableces la conexión con el servidor de base de datos
// $Query = "SELECT * FROM usuarios where Nombre = $_POST['Usuario']' AND Pass = $_POST['pass']";

Una vez que obtienes resultados (mysqli_fetch_row) puedes seguir con los algoritmos.

Espero sea útil.

Un saludo.!