PHP - Error message log in form

0

I want the log to say an error message "below" the password input of the style "Your data is not correct".

How could I fill in the information of the div id="message" from the file logueo_administrator.php? File php where I made the connection to the database.

HTML Code:

<!DOCTYPE html>
<html lang="es">
    <head>
        <meta charset="UTF-8">
        <title>Formulario de Login - Administrador</title>
        <link rel="stylesheet" href="css/estilos_iniciar_sesion.css">
        <script type="text/javascript" src="js/validar_iniciar_sesion_administrador.js"></script>
    </head>
    <body>
        <form name="miformulario" id="miformulario" action="logueo_administrador.php" method="POST" class="form" onsubmit="return validar_iniciar_sesion_administrador();">
            <h2>ADMINISTRADOR</h2>
            <h4><center>INICIAR SESIÓN</center></h4>
            <input type="text" placeholder="&#128272; Usuario" name="idemail" id="idemail">
            <input type="password" placeholder="&#128272; Contraseña" name="password" id="password">
            <div align="mensaje">

            </div>
            <div align="center">
                <input type="submit" value="Iniciar sesión"><br/>
            </div>
        </form>
    </body>
</html>

PHP Code:

<?php
    //Compatibilidad de tildes y eñes.
    header("Content-Type: text/html;charset=utf-8");
    //Incluimos, si no existe previamente, el archivo "conexion.php".
    require_once "conexion.php";
    //Iniciar una nueva sesión o reanudar la existente.
    session_start();

    //Guardamos el valor de los campos <input> del formulario en variables.
    $idemail = $_POST["idemail"];
    $password = $_POST["password"];

    //Nos conectamos a la base de datos.
    $conexion = mysqli_connect("localhost", "root", "root", "osmarrural");
    $sql = "SELECT * FROM administradores WHERE idemail='".$idemail."' and password='".$password."'";
    $resultado = mysqli_query($conexion, $sql);

    //Guardamos la cantidad de filas que hemos obtenido de la consulta.
    $filas = mysqli_num_rows($resultado);

    //Si existen filas...
    if($filas>0){
        //Hay un administrador logueado correctamente y cargamos "bienvenido_administrador.php".
        $_SESSION["administrador"] = $idemail;
        header("Location: panel_administrador.php");
    }else{
        //Aquí debería ir el relleno del div mensaje.
        echo "<center><h2>¡Debes iniciar sesión para ser administrador!</h2></center>";
        header("Refresh:2; url=iniciar_sesion_administrador.php");
    }

    //Libera la memoria del resultado.
    mysqli_free_result($resultado);

    //Cierra la conexión.
    mysqli_close($conexion);
?>
    
asked by omaza1990 27.11.2017 в 17:44
source

1 answer

2

The best way to achieve this would be to use ajax and not the conventional method, but since you are doing so you could do it by sending a GET parameter and in the HTML structure (which should be in a file with extension .php) ask if such a parameter exists and if it exists, the message is displayed.

HTML Code:

<!DOCTYPE html>
<html lang="es">
    <head>
        <meta charset="UTF-8">
        <title>Formulario de Login - Administrador</title>
        <link rel="stylesheet" href="css/estilos_iniciar_sesion.css">
        <script type="text/javascript" src="js/validar_iniciar_sesion_administrador.js"></script>
    </head>
    <body>
        <form name="miformulario" id="miformulario" action="logueo_administrador.php" method="POST" class="form" onsubmit="return validar_iniciar_sesion_administrador();">
            <h2>ADMINISTRADOR</h2>
            <h4><center>INICIAR SESIÓN</center></h4>
            <input type="text" placeholder="&#128272; Usuario" name="idemail" id="idemail">
            <input type="password" placeholder="&#128272; Contraseña" name="password" id="password">
            <div align="mensaje">
                <?php if(isset($_GET['error']) && $_GET['error'] == 'true'): ?>
                    <center><h2>¡Sus datos no son correctos!</h2></center>
                <?php endif; ?>
            </div>
            <div align="center">
                <input type="submit" value="Iniciar sesión"><br/>
            </div>
        </form>
    </body>
</html>

PHP Code:

<?php
    //Compatibilidad de tildes y eñes.
    header("Content-Type: text/html;charset=utf-8");
    //Incluimos, si no existe previamente, el archivo "conexion.php".
    require_once "conexion.php";
    //Iniciar una nueva sesión o reanudar la existente.
    session_start();

    //Guardamos el valor de los campos <input> del formulario en variables.
    $idemail = $_POST["idemail"];
    $password = $_POST["password"];

    //Nos conectamos a la base de datos.
    $conexion = mysqli_connect("localhost", "root", "root", "osmarrural");
    $sql = "SELECT * FROM administradores WHERE idemail='".$idemail."' and password='".$password."'";
    $resultado = mysqli_query($conexion, $sql);

    //Guardamos la cantidad de filas que hemos obtenido de la consulta.
    $filas = mysqli_num_rows($resultado);

    //Si existen filas...
    if($filas>0){
        //Hay un administrador logueado correctamente y cargamos "bienvenido_administrador.php".
        $_SESSION["administrador"] = $idemail;
        header("Location: panel_administrador.php");
    }else{
        //Aquí debería ir el relleno del div mensaje.
        header("Location: iniciar_sesion_administrador.php?error=true");
    }

    //Libera la memoria del resultado.
    mysqli_free_result($resultado);

    //Cierra la conexión.
    mysqli_close($conexion);
?>
    
answered by 27.11.2017 / 17:56
source