PHP:Sesiones: ¿Qué y Para qué?

De Foros del Web

Las sesiones básicamente son variables globales que nos permiten almacenar datos que necesiten volver a ser usados en otros accesos a la página. Cuando una persona entra a una página que utiliza sesiones automáticamente se crea un archivo de session en los archivos temporales del servidor y en este archivo es donde se guardan los datos que nosotros deseemos almacenar.

Para poder manejar las sesiones sería conveniente primero ver la manera que accedemos a éstas y las usamos. Como dijimos antes cuando el usuario entra a la página que usa sesiones se crea un archivo, este archivo posee el mismo nombre que su "id".

Para que una página utilice sesiones debemos inicializarla con la funcion "session_start(void)",que básicamente lo que hace es crear una nueva sesión o retomar una creada en otra página(del sitio). Las sessiones propagan su SID(SESSION ID) de dos posibles maneras, segun php.ini, por cookies o por url, es decir agregando a todos los posibles link el SID de la sesion.

Otra razón por la que la sesiones suelen ser muy utilizadas es para la "autentificación", determinando el acceso a la página según alguna variable específica de la sesión. Creemos dos archivos útiles para la explicación:

-index.php

Código PHP:

<?php  
session_start(); 
?> 
<html> 
<head> 
<title>Las sesiones y Yo(Nefertiter)</title> 
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
</head> 
<body> 
<table width="500" border="0" align="center" cellpadding="0" cellspacing="0"> 
<tr> 
<td><?php 
if(isset($_POST['enviar'])){ 
if(empty($_POST['usuario']) || empty($_POST['password'])) 
echo 'Debes llenar todos los datos';  
elseif($_POST['usuario']==test and $_POST['password']==test){ 
$_SESSION['usuario']=$_POST['usuario']; 
$_SESSION['password']=$_POST['password'];  
echo 'Te haz loguedo como '.$_SESSION['usuario']; 
} 
} 
?></td> 
<td rowspan="2"><form name="login" method="post" action="index.php"> 
<table width="250" border="0" align="center" cellpadding="0" cellspacing="0"> 
<tr> 
<td>Usuario:</td> 
<td><input name="usuario" type="text" id="usuario"></td> 
</tr> 
<tr> 
<td>Password:</td> 
<td><input name="password" type="password" id="password"></td> 
</tr> 
<tr align="center"> 
<td colspan="2"><input name="enviar" type="submit" id="enviar" value="Enviar"></td> 
</tr> 
</table> 
</form></td> 
</tr> 
<tr> 
<td><a href="segura.php">PAGINA SEGURA</a></td> 
</tr> 
</table> 
</body> 
</html> 

-segura.php

Código PHP:

<?php  
session_start(); 
if(!empty($_SESSION['usuario'])){ 
/* La funcion empty() devuelve verdadero si el argumento posee un valor vacio, 
al usar !empty() devuelve verdadero no solo si la variable fue declarada sino  
ademas si contiene algun valor no nulo. 
*/ 
echo 'Te haz logueado como :'.$_SESSION['usuario']; 
echo 'Haz logrado el acceso a una pagina segura'; 
}else{ 
echo 'No estas logueado<br>'; 
echo 'Esta pagina es restringida!'; 
} 
?> 

Como hemos visto es sumamente simple la manera que en las variables de sesiones son establecidas puesto que se las trabaja como variables comunes, ahora creemos otro archivo,en el que mostraremos como eliminarlas.

-logout.php

Código PHP:

<?php  
unset($_SESSION['usuario']); 
unset($_SESSION['password']); 
/* la funcion unset() destruye la varible que se le de como argumento*/ 
echo "Ya no te encuentras logueado" 
?> 

-Otras funciones

PHP no se limita solamente a una función en lo que a sesiones respecta. También poseemos otras como "session_name()", que nos permiten darle algun nombre en especial a la session, "session_id()", que nos devuelve el id de la session y en caso de introducir un argumento la reemplaza. También poseemos otra funcion llamada "session_cache_limiter()" que nos sirve para averiguar el limitador de cache actual, existen 3 modos: "nocache", "public" y "private"; cada una de éstas posee una manera determinada de manejar la caducidad de las variables de sesión que se envian al navegador. Un detalle tanto "session_name()" como "session_cache_limiter()" deben ser declarados antes que "session_start()". Un último ejemplo:

-sessions.settings.php

Código PHP:

<?php 
session_name ("recursofaqs"); 
session_cache_limiter ("private"); 
session_start();  
echo "<br> El nombre de la sesion es: ".session_name(); 
echo "<br> El limitador de la sesion es: ".session_cache_limiter(); 
echo "<br> El id de la sesion es: ". session_id(); 
?> 

--Nefertiter 07 Nov 2004

Este artículo es parte de las FAQs de PHP y el Manual de PHP.

Herramientas personales