Sistema Login en PHP con NetBeans (Parte 3)

Hola tyros, continuamos con nuesrtro proyecto.

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