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
Publicar un comentario