# 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');
?>
```