Buscador


En todo Internet
En Uterra.Com

Contenidos


Una forma más de paso de variables de una página a otra son las sesiones. Una sesión es una variable que se crea en el servidor y esta variable puede ejecutarse sin que el usuario de la Web tenga conocimiento alguno de ello.

Pero ¿en que se diferencian las sesiones de los métodos POST y GET? Los métodos POST y GET permiten que los usuarios asignen valores a variables, y también permiten que la propia página tome valores internos, por ejemplo de una base de datos, y opere con ellos. Los valores emitidos por POST y GET pueden tener un origen conocido para el usuario y también su destino puede ser conocido (no quiero decir que siempre sea fácil o igual de fácil, solo que es posible). De cualquier forma, el usuario podrá tener conocimiento de las variables que se envían y de sus valores. Pues bien, con las sesiones podemos hacer lo mismo, pero con una diferencia, la variable de sesión será recuperable en cualquier parte del sitio Web sin tener que crear enlaces de pasos de variable o formularios con métodos GET o POST, por lo que el usuario no sabrá ni cuando se crea (aunque lo pueda intuir) ni donde o cuando se recupera y ejecuta la variable. Simplemente cuando pasas de una página a otra mediante un enlace normal y corriente, tendrás la variable disponible para usarla. Sin las variables de sesión no serian posible los sistemas seguros de identificación.

Un último detalle sobre las variables de sesión, a menos que el programador lo haga al contrario, el usuario de la Web podrá no tener nunca constancia que de esta identificado, por ejemplo, mediante una variable de sesión, no conocerá su nombre ni su valor, ni siquiera de que la Web por la que navega usa sesiones, que lo pueda intuir ya es otro asunto.

Las variables de sesión tiene caducidad, que esta predeterminada en el servidor y de auto-elimina pasados unos 20 minutos (aproximadamente) de inactividad. Inactividad supone no estar navegando en la página, mientras pases de una página a otra, la sesión estará activa. Por eso, cuando hemos intentado acceder a la página donde estábamos ya identificados después de haber estado alejados un rato de nuestro ordenador, nos pide que nos identifiquemos de nuevo. Una forma común de eliminar las variables de sesión es mediante la pulsación de típico botón “Salir”, para dejar de estar identificados.

Para crear y recuperar las variables de sesión hay que iniciarlas antes, una sesión se inicia de la siguiente manera, siempre en la primera línea de la página o inmediatamente tras la apertura de php:

session_start();

Creamos variable de sesión:

$_SESSION["var_sesion"] = $valorsesion;

Recuperamos la variable de sesión:

$valor_sesion = $_SESSION["var_sesion"];

Eliminamos una variable de sesión concreta

unset($_SESSION['var_sesion']); 

Eliminamos todas las variables de sesión.

session_destroy();

Estos códigos muestran la asignación de un valor a una variable de sesión a través de un formulario, como se recupera el valor de la variable y como se destruyen una o todas las sesiones. Por supuesto las sesiones también pueden tomar valores recuperados de una base de datos. Así cuando un usuario introduce su email para identificarse, a partir de este email se puede recuperar el identificador de este usuario de la base de datos, y ese identificador se propagara como sesión y mantendrá identificado al usuario, pero nunca sabremos (como usuarios) cual es ese valor o la variable que lo contiene, así si el sistema de identificación no tiene “agujeros de seguridad” será prácticamente invulnerable.

----- sesion1.php

<?php
session_start
();
?>

<html>
<head>
<title>Generar variable de sesión</title>
</head>
<body>

<form method="POST" action="sesion1.php">
    <p>Valor para la variable de sesión <input type="text" name="valorsesion" size="20"></p>
    <p><input type="submit" value="Creamos variable de sesion" name="B1"></p>
</form>

<?php
$valorsesion 
$_POST['valorsesion'];

$_SESSION["var_sesion"] = $valorsesion;
?>

<p><a href = "sesion2.php">Ver valor de sesion</a></p>
</body>
</html>

------------------------------------------------------------------------------------
----- sesion2.php

<?php
session_start
();
?>

<html>
<head>
<title>Leo variable se sesión</title>
</head>
<body>

Muestro el valor que toma la variable sesión: <br>

<?php
$valor_sesion 
$_SESSION["var_sesion"];
echo 
$valor_sesion;
?>

<p><a href = "sesion3.php">Ver la variable en otra pagina</a></p>
</body>
</html>

------------------------------------------------------------------------------------
----- sesion3.php

<?php
session_start
();
?>

<html>
<head>
<title>Leo variable se sesión en otra pagina</title>
</head>
<body>

Muestro el valor que toma una variable cualquiera junto con el 
de la variable sesión: <br>

<?php
$unacualquiera 
"lo que sea";

$valor_sesion $_SESSION["var_sesion"];

echo
"Vemos una variable de esta pagina <b>$unacualquiera</b> 
y la variable de sesion <b>
$valor_sesion</b>";
?>

<p><a href = "sesion4.php">Eliminar variable de sesion</a></p>
</body>
</html>

------------------------------------------------------------------------------------
----- sesion4.php

<?php
session_start
();
session_unset();
session_destroy();
?>

<html>
<head>
<title>Variable de sesion eliminada.</title>
</head>
<body>

Intento escribir la variable de sesion, pero ya no aparece: <br>

<?php
$valor_sesion 
$_SESSION["var_sesion"];
echo 
$valor_sesion;
?>

<p><a href = "sesion1.php">Vuelvo a crear variable de sesion.</a></p>
</body>
</html>

Código PHP