---
# System prepended metadata

title: 'Día 13, proyecto Bienes Raíces: creando formulario para autentificación'
tags: [php]

---

# Día 13, proyecto Bienes Raíces: creando formulario para autentificación y validarlo

Creamos un formulario en un nuevo archivo login.php

```
    <form method="POST" class="formulario" >
         <fieldset>
                <legend>Email y Password</legend>

                 <label for="email">E-mail</label>
                <input type="email" name="email" placeholder="Tu Email" id="email" required>

                <label for="password">Password</label>
                <input type="password" name="password" placeholder="Password" id="password" required>

               
            </fieldset>
            <input type="submit" value="Iniciar sesión" class="boton boton-verde">

    </form>
```
Cómo ves no hemos puesto ningún action por lo que por ahora los datos se enviarán hacia este mismo formulario, así que para validar ponemos el siguiente código al principio del script:

Ves que utilizamos validación del email en el lado del servidor a pesar de que ya se hace en el lado del cliente, y que además también usamos https://www.php.net/manual/es/mysqli.real-escape-string.php

Analiza qué podría pasar si no lo hiciéramos?

Necesitamos además añadir en la parte del HTML que muestre los errores:
```
 <?php 
        foreach($errores as $error){ ?>
            <div class="alerta error">
                <?php echo $error;?>
            </div>
    <?php
        }
    ?>
```
La parte previa es un scritp en el cual  haremos un poco lo de siempre:
1) iniciar el array de errores
2) comprobar los datos que han sido enviados en el post, sanitizándolos y corrigiendo errores
3) en el caso de no haber ninguno, hacer la query para comprobar si hay un usuario con ese email
4) si el email es correcto se comprueba el password con password-verify https://www.php.net/manual/en/function.password-verify.php
5) si el password es correcto se tendrá que comenzar la sesión (en la siguiente clase)
```
<?php
require './includes/config/database.php';
$db=conectarDB();
$errores=[];
//validación del formulario
if($_SERVER['REQUEST_METHOD']==='POST'){

    // echo '<pre>';
    // var_dump($_POST);
    // echo '</pre>';
    //sanitizamos datos
    $email=mysqli_real_escape_string($db, filter_var($_POST['email'], FILTER_VALIDATE_EMAIL));
    $password=mysqli_real_escape_string($db, $_POST['password']);
    //comprobamos errores
    if(!$email){
        $errores[]="El email es obligatorio o no es válido";
    }

    if(!$password){
        $errores[]="El password es obligatorio";
    }
//en caso de no haber errores
    if(empty($errores)){
        //revisar si el usuario existe
        $query="SELECT * FROM usuarios WHERE  email='${email}'";
        $resultado= mysqli_query($db, $query);
        if ($resultado->num_rows){
            //revisar si el password es correcto
            $usuario=mysqli_fetch_assoc($resultado);
            //nos devolverá true o false en el caso de que el password guardado en la bd sea igual al pasado por post
            $auth=password_verify($password, $usuario["password"]);
            //var_dump($auth);
            if($auth){
                //el usuario está autentificado
                //**TODO */
            }else{
                $errores[]= "El password es incorrecto";
            }            
        }else{
            $errores[]="El usuario no existe";
        }

    }
}
//inclusión del encabezado
    require './includes/funciones.php';
    incluirTemplate('header');
    
?>
```