137 lines
4.1 KiB
PHP
137 lines
4.1 KiB
PHP
|
<?php
|
||
|
//======================================================================
|
||
|
// LOGIN
|
||
|
//======================================================================
|
||
|
|
||
|
//-----------------------------------------------------
|
||
|
// Imports
|
||
|
//-----------------------------------------------------
|
||
|
require_once('DB.php');
|
||
|
|
||
|
//-----------------------------------------------------
|
||
|
// Variables
|
||
|
//-----------------------------------------------------
|
||
|
$miDB = new DB();
|
||
|
$errorLogin = False;
|
||
|
$erroresEmail = [];
|
||
|
$email = isset($_REQUEST['email']) ? $_REQUEST['email'] : null;
|
||
|
$erroresPassword = [];
|
||
|
$password = isset($_REQUEST['password']) ? $_REQUEST['password'] : null;
|
||
|
|
||
|
// Comprobamos si nos llega los datos por POST
|
||
|
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
|
||
|
|
||
|
//-----------------------------------------------------
|
||
|
// Funciones Para Validar
|
||
|
//-----------------------------------------------------
|
||
|
/**
|
||
|
* Método que valida si un texto no esta vacío
|
||
|
* @param {string} - Texto a validar
|
||
|
* @return {boolean}
|
||
|
*/
|
||
|
function validar_requerido(string $texto): bool
|
||
|
{
|
||
|
return !(trim($texto) == '');
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Método que valida si es un número entero
|
||
|
* @param {string} - Número a validar
|
||
|
* @return {bool}
|
||
|
*/
|
||
|
function validar_entero(string $numero): bool
|
||
|
{
|
||
|
return filter_var($numero, FILTER_VALIDATE_INT);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Método que valida si el texto tiene un formato válido de E-Mail
|
||
|
* @param {string} - Email
|
||
|
* @return {bool}
|
||
|
*/
|
||
|
function validar_email(string $texto): bool
|
||
|
{
|
||
|
return filter_var($texto, FILTER_VALIDATE_EMAIL);
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------
|
||
|
// Validaciones
|
||
|
//-----------------------------------------------------
|
||
|
// Email no esta vacio
|
||
|
if (!validar_requerido($email)) {
|
||
|
$erroresEmail[] = 'El campo es obligatorio.';
|
||
|
}
|
||
|
// Email tiene formato
|
||
|
if (!validar_email($email)) {
|
||
|
$erroresEmail[] = 'El campo tiene un formato no válido.';
|
||
|
}
|
||
|
// Password no esta vacio
|
||
|
if (!validar_requerido($password)) {
|
||
|
$erroresPassword[] = 'El campo es obligatorio.';
|
||
|
}
|
||
|
|
||
|
//-----------------------------------------------------
|
||
|
// Redireccionamos usuario a privado
|
||
|
//-----------------------------------------------------
|
||
|
if ($miDB->validarUsuario($email, $password)) {
|
||
|
// Si son correctos, creamos la sesión
|
||
|
session_start();
|
||
|
$_SESSION['user'] = $email;
|
||
|
// Redireccionamos a la página segura
|
||
|
header('Location: privado.php');
|
||
|
die();
|
||
|
} else {
|
||
|
$errorLogin = True;
|
||
|
}
|
||
|
}
|
||
|
?>
|
||
|
<!DOCTYPE html>
|
||
|
<html lang="en">
|
||
|
<head>
|
||
|
<meta charset="UTF-8">
|
||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
|
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
||
|
<title>Login</title>
|
||
|
</head>
|
||
|
<body>
|
||
|
<?php if ($errorLogin): ?>
|
||
|
<p>¡Ups! El email o el password no es válido.</p>
|
||
|
<?php endif; ?>
|
||
|
<form action="" method="post">
|
||
|
<p>
|
||
|
<label>
|
||
|
Email
|
||
|
<input type="text" name="email" value="<?= $email ?>">
|
||
|
</label>
|
||
|
<?php if (isset($erroresEmail)): ?>
|
||
|
<ul class="errores">
|
||
|
<?php
|
||
|
foreach ($erroresEmail as $error) {
|
||
|
echo '<li>' . $error . '</li>';
|
||
|
}
|
||
|
?>
|
||
|
</ul>
|
||
|
<?php endif; ?>
|
||
|
</p>
|
||
|
<p>
|
||
|
<label>
|
||
|
Contraseña
|
||
|
<input type="password" name="password">
|
||
|
</label>
|
||
|
<?php if (isset($erroresPassword)): ?>
|
||
|
<ul class="errores">
|
||
|
<?php
|
||
|
foreach ($erroresPassword as $error) {
|
||
|
echo '<li>' . $error . '</li>';
|
||
|
}
|
||
|
?>
|
||
|
</ul>
|
||
|
<?php endif; ?>
|
||
|
</p>
|
||
|
<p>
|
||
|
<input type="submit" value="Entrar">
|
||
|
</p>
|
||
|
</form>
|
||
|
<p><a href="recuperar_contrasenya.php">¿Has olvidado tu contraseña?</a></p>
|
||
|
</body>
|
||
|
</html>
|