---
# System prepended metadata

title: 'Dia 14, proyecto Bienes Inmuebles: iniciando sesión'
tags: [php]

---

# Dia 14, proyecto Bienes Inmuebles: iniciando y cerrando sesión

Una vez que está autenficiado el usuario deberemos usar una sesión para hacer que permanezca autentificado en la navegación por la zona en la que esté permitido su acceso.

Para ello usamos la super global $_SESSION 
https://www.php.net/manual/en/reserved.variables.session.php

Dentro del if donde dejamos planteado que el usuario ya estaba correctamente autenticado debemos invocar la función session_start()
```
    if($auth){
                //el usuario está autentificado
                session_start();
                // echo "<pre>";
                // var_dump($_SESSION);
                // echo "</pre>";
                //llenamos los datos de la sesión
                $_SESSION["usuario"]=$usuario["email"];
                $_SESSION["login"]=true;
                header('Location: /admin');

            }else{
                $errores[]= "El password es incorrecto";
            }          
```     

Básicamente rellenamos la sesión con los datos que creamos necesarios para que se pasen de una página a otra durante la navegación y llevamos la navegación al admin.
Estos datos estarán activos hasta que expire la sesión o la cerremos.
Comenzando por el index del panel de administrador debemos colocar una verificación de que el usuario está autenticado, pero mejor crear una función y llamarla desde todas las páginas a las que necesites acceder previarmente autentificado. 

Creemos en templates/funciones la siguiente función:
```
function estaAutenticado():bool{
       session_start();
       $auth=$_SESSION['login'];
       if ($auth){
              return true;
       }
       return false;

}
```
De tal manera que en todas las páginas que quieras que sólo se pueda entrar autentificado sólo tendrás que incluir este código que comprueba si está autentificado y en caso contrario nos lleva al index general:

```
require '../../includes/funciones.php';
$auth=estaAutenticado();
if(!$auth){
    header('Location: /');
}
```
Ten en cuenta dos cosas:
- la ubicación de funciones variará dependiendo de desde dónde se llame
- y ese require lo teníamos más abajo al incluir el encabezado, debes moverlo al principio de cada fichero 

Haz varios experimentos para ver cómo se ve la sesión y si realmente se puede entrar en las páginas si estás autenticado o no. 

## Cerrando sesión

Por seguridad debemos cerrar sesión, para lo cual en el header vamos a incluir lo siguiente: 
```
<?php
    if(!isset($_SESSION)){
        session_start();
    }
    $auth=$_SESSION['login'] ?? false;
?>
```

Y en el html algo así:
```
 <?php 
    if($auth){?>
       <a href="cerrar-sesion.php">Cerrar Sesión</a>
    <?php } else { ?>
        <a href="login.php">Login</a>
    <?php }?>
```
Comprueba la navegabilidad con estas opciones, y por ahora...proyecto terminado!!!!