En el capítulo anterior vimos el diagrama de flujo, hoy vamos a ver el código; que es la parte que mas nos interesa.
Primero vamos a agregar algunos elementos a nuestro proyecto, les muestro una imagen:
Comenzaremos con el código mas interesante, es la clase "Usuarios.php", es el siguiente:
<?php
/**
* Description of Usuarios
*
* @author gabriel.castillo
*/
error_reporting(E_ALL & ~E_DEPRECATED);
ini_set("display_errors", "1");
class Usuarios {
function Login($userLogin, $userPassword) {
//Implementar aqui la lógica para validar
//Usuario y contraseña
$retorno = false;
if (($userLogin == "admin") && ($userPassword == "123")) {
$retorno = true;
}
return $retorno;
}
public static function userIsAuth() {
//Si no hay una sesión iniciada, la iniciamos
if (!isset($_SESSION)) {
session_start();
}
//Si existe la variable "user_login", significa que el usuario ha iniciado sesión
if (isset($_SESSION['user_login'])) {
return true;
} else {
return false;
}
}
public static function absPath() {
return filter_input(INPUT_SERVER, 'DOCUMENT_ROOT', FILTER_SANITIZE_STRING);
}
}
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
if (isset($_GET["functionToCall"]) && !empty($_GET["functionToCall"])) {
$functionToCall = $_GET["functionToCall"];
switch ($functionToCall) {
case "login":
if ($_POST) {
$user = new Usuarios();
if ($user->Login($_POST["txtUserLogin"], $_POST["txtUserPassword"])) {
$_SESSION["login_msg"] = "";
$_SESSION["user_login"] = $_POST["txtUserLogin"];
header("Location: " . base64_decode($_GET["ReturnUrl"]));
die();
} else {
$_SESSION["login_msg"] = "Usuario o contraseña incorrectos";
header("Location: " . base64_decode($_GET["ReturnUrl"]));
die();
}
} else {
$_SESSION["login_msg"] = "Debes llenar todos los campos";
}
break;
case "logout":
session_unset();
session_destroy();
header("location: ../index.php");
break;
}
}
?>
Continuamos con la hoja de estilos "style.css":
body{
font-family: Arial;
}
a {
text-decoration: none;
}
.active{
color: blue;
}
Ahora, el código de "catalogos.php":
<?php
error_reporting(E_ALL & ~E_DEPRECATED);
ini_set("display_errors", 1);
include_once("codigo/Usuarios.php");
if (!Usuarios::userIsAuth()) {
header("Location: login.php?ReturnUrl=" . base64_encode("$_SERVER[REQUEST_URI]" . (is_null(filter_input(INPUT_SERVER, "QUERY_STRING", FILTER_SANITIZE_STRING)) ? "?" . filter_input(INPUT_SERVER, "QUERY_STRING", FILTER_SANITIZE_STRING) : "")));
die();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Sistema</title>
<link href="css/style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<img src="img/tyrodeveloper-icono.jpeg" height="100" width="100" alt="Logo"/>
<h1>Bienvenido <?php echo $_SESSION["user_login"]; ?>, esta es una página protegida</h1>
<hr>
<a href="index.php">Inicio</a>
| <a href="#" class="active">Catálogos</a>
| <a href="reportes.php">Reportes</a>
| <a href="codigo/Usuarios.php?functionToCall=logout">Cerrar Sesión</a>
</body>
</html>
Seguimos con el archivo "index.php":
<?php
error_reporting(E_ALL & ~E_DEPRECATED);
ini_set("display_errors", 1);
include_once("codigo/Usuarios.php");
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Sistema</title>
<link href="css/style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<img src="img/tyrodeveloper-icono.jpeg" height="100" width="100" alt="Logo"/>
<h1>Bienvenido <?php echo Usuarios::userIsAuth() ? $_SESSION["user_login"] : ""; ?>, esta es una página sin protección</h1>
<hr>
<a href="#" class="active">Inicio</a>
| <a href="catalogos.php">Catálogos</a>
| <a href="reportes.php">Reportes</a>
<?php
if (Usuarios::userIsAuth()) {
echo '| <a href="codigo/Usuarios.php?functionToCall=logout">Cerrar Sesión</a>';
}
?>
<br /><br />
</body>
</html>
Este es el código para "login.php"
<?php
error_reporting(E_ALL & ~E_DEPRECATED);
ini_set("display_startup_error", 1);
ini_set("display_errors", 1);
include("codigo/Usuarios.php");
?>
<html>
<head>
<meta charset="UTF-8">
<title>Sistema</title>
<link href="css/style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<img src="img/tyrodeveloper-icono.jpeg" height="100" width="100" alt="Logo"/>
<h1>Iniciar sesión</h1>
<hr>
<form role="form" method="post" action="codigo/Usuarios.php?functionToCall=login<?php echo ( isset($_GET['ReturnUrl']) ? '&' . $_SERVER['QUERY_STRING'] : '&ReturnUrl=' . base64_encode('./') ) ?>">
<table>
<tr>
<td>Usuario:</td>
<td>
<input id="txtUserLogin" name="txtUserLogin" type="text" runat="server" required />
</td>
</tr>
<tr>
<td>Contraseña</td>
<td>
<input id="txtUserPassword" name="txtUserPassword" type="password" runat="server" />
</td>
</tr>
<tr>
<td colspan="2" style="text-align:center;">
<button type="submit" >Aceptar</button>
</td>
</tr>
</table>
<?php
if ($_SESSION) {
echo "<br />" . $_SESSION["login_msg"];
}
?>
</form>
</body>
</html>
Y, para finalizar, el código de "reportes.php"
<?php
error_reporting(E_ALL & ~E_DEPRECATED);
ini_set("display_errors", 1);
include_once("codigo/Usuarios.php");
if (!Usuarios::userIsAuth()) {
header("Location: login.php?ReturnUrl=" . base64_encode("$_SERVER[REQUEST_URI]" . (is_null(filter_input(INPUT_SERVER, "QUERY_STRING", FILTER_SANITIZE_STRING)) ? "?" . filter_input(INPUT_SERVER, "QUERY_STRING", FILTER_SANITIZE_STRING) : "")));
die();
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Sistema</title>
<link href="css/style.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<img src="img/tyrodeveloper-icono.jpeg" height="100" width="100" alt="Logo"/>
<h1>Bienvenido <?php echo $_SESSION["user_login"]; ?>, esta es una página protegida</h1>
<hr>
<a href="index.php">Inicio</a>
| <a href="catalogos.php">Catálogos</a>
| <a href="#" class="active">Reportes</a>
| <a href="codigo/Usuarios.php?functionToCall=logout">Cerrar Sesión</a>
</body>
</html>
No hay comentarios:
Publicar un comentario