2-Variables de sesion

 Es otro método para hacer que variables estén disponibles en múltiples páginas sin tener que pasarlas como parámetro. A diferencia de las cookies, las variables de sesión se almacenan en el servidor y tienen un tiempo limitado de existencia.


Para identificar al usuario que generó las variables de sesión, el servidor genera una clave única que es enviada al navegador y almacenada en una cookie. Luego, cada vez que el navegador solicita otra página al mismo sitio, envía esta cookie (clave única) con la cual el servidor identifica de qué navegador proviene la petición y puede rescatar de un archivo de texto las variables de sesión que se han creado. Cuando han pasado 20 minutos sin peticiones por parte de un cliente (navegador) las variables de sesión son eliminadas automáticamente (se puede configurar el entorno de PHP para variar este tiempo).


Haremos un problema muy sencillo, cargaremos en un formulario el nombre de usuario y clave de un cliente, en la segunda página crearemos dos variables de sesión y en una tercera página recuperaremos los valores almacenados en las variables de sesión.


La primera página es un formulario HTML puro:


pagina1.html


<html>


<head>

  <title>Problema</title>

</head>


<body>

  <form action="pagina2.php" method="post">

    Ingrese nombre de usuario:

    <input type="text" name="campousuario"><br>

    Ingrese clave:

    <input type="password" name="campoclave"><br>

    <input type="submit" value="confirmar">

  </form>

</body>


</html>


Lo que podemos recalcar es que, cuando en un cuadro de texto queremos ingresar una clave y no queremos que aparezcan los caracteres tipeados en pantalla, debemos utilizar el control de tipo password:


    <input type="password" name="campoclave"><br>


La segunda página es donde creamos e inicializamos las dos variables de sesión:


pagina2.php


<?php

session_start();

$_SESSION['usuario'] = $_REQUEST['campousuario'];

$_SESSION['clave'] = $_REQUEST['campoclave'];

?>

<html>


<head>

  <title>Problema</title>

</head>


<body>

  Se almacenaron dos variables de sesión.<br><br>

  <a href="pagina3.php">Ir a la tercer página donde se recuperarán

    las variables de sesión</a>

</body>


</html>


Cuando creamos o accedemos al contenido de variables de sesión debemos llamar a la función session_start() antes de cualquier salida de etiquetas HTML.


Para almacenar los valores en las variables de sesión lo hacemos:


$_SESSION['usuario']=$_REQUEST['campousuario'];

$_SESSION['clave']=$_REQUEST['campoclave'];

Es decir, tenemos el vector asociativo $_SESSION que almacena las variables de sesión.


Por último, esta página tiene un hipervínculo a la tercera página.


La última página de este ejemplo tiene por objetivo acceder a las variables de sesión:


pagina3.php

<?php

session_start();

?>

<html>


<head>

    <title>Problema</title>

</head>


<body>

    <?php

    echo "Nombre de usuario recuperado de la variable de sesión:" . $_SESSION['usuario'];

    echo "<br><br>";

    echo "La clave recuperada de la variable de sesión:" . $_SESSION['clave'];

    ?>

</body>


</html>


De nuevo vemos que la primera línea de esta página es la llamada a la función session_start() que, entre otras cosas, rescata de un archivo de texto las variables de sesión creadas para ese usuario (recordemos que desde el navegador todas las veces retorna una cookie con la clave que generó PHP la primera vez que llamamos a una página del sitio).


Para mostrar las variables de sesión, las accedemos por medio del vector asociativo $_SESSION:


    echo "Nombre de usuario recuperado de la variable de sesión:" . $_SESSION['usuario'];

    echo "<br><br>";

    echo "La clave recuperada de la variable de sesión:" . $_SESSION['clave'];

Tengamos en cuenta que en cualquier otra página del sitio tenemos acceso a las variables de sesión sólo con llamar inicialmente a la función session_start().






Ejemplo de código para definir una variable de sesión

<?php 

session_start(); 

?> 

<html> 

<head> 

<title>Generar variable de sesión</title> 

</head> 

<body> 

<?php 

$_SESSION["mivariabledesesion"] = "Hola este es el valor de la variable de sesión"; 

?> 

</body> 

</html>

Para leer una variable de sesión se hace a través del mismo array asociativo $_SESSION. Es tan sencillo como haríamos para utilizar cualquier otra variable, lo único es que tenemos que haber inicializado la sesión previamente. Y por supuesto, que la variable que deseamos acceder exista previamente.


<?php

session_start(); 

?> 

<html> 

<head> 

<title>Leo variable se sesión</title> 

</head> 

<body> 

Muestro esa variable: 

<?php 

echo $_SESSION["mivariabledesesion"]; 

?> 

</body> 

</html>



<?php

session_start();

if(isset($_SESSION['nombredelusuario']))
{
	$usuarioingresado = $_SESSION['nombredelusuario'];
	echo "<h1>Bienvenido: $usuarioingresado </h1>";
}
else
{
	header('location: index.php');
}

if(isset($_POST['btncerrar']))
{
	session_destroy();
	header('location: index.php');
}
?>

<link rel="stylesheet" href="login.css">
<body>
<form method="POST">
<input type="submit" value="Cerrar sesión" name="btncerrar" />
</form>
</body>

Comentarios

Entradas populares de este blog

Filtrando por fecha

10 videojuegos gratis para aprender JavaScript en línea

reloj obs---datetime.lua