Pregunta:Sesiones: Que y Para que?
-Respuesta: Las sesiones basicamente son varibles globales que nos permiten almacenar datos que necesiten volver a ser usados en otros accesos a la pagina. Cuando una persona entra a una pagina que utiliza sesiones automaticamente 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 almecenar.
Para poder manejar las sesiones seria conveniente primero ver la manera que accedemos a estas y las usamos.
Como dijimos antes cuando el usuario entra a la pagina que usa sesiones se crea un archivo, este archivo posee el mismo nombre que su "id".
Para que una pagina utilice sesiones debemos inicializarla con la funcion "session_start(void)",que basicamente lo que hace es crear una nueva sesion o retomar una creada en otra pagina(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 razon por la que la sesiones suelen ser muy utilizadas es para la "autentificacion", determinando el acceso a la pagina segun alguna variable especifica de la sesion.
Creemos dos archivos utiles para la explicacion:
-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>
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!';
}
?>
-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"
?>
PHP no se limita solamente a una funcion en lo que a sesiones respecta. Tambien 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. Tambien 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 estas posee una manera determinada de manejar la caducidad de las variables de sesion que se envian al navegador. Un detalle tanto "session_name()" como "session_cache_limiter()" deben ser declarados antes que "session_start()". Un ultimo 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();
?>