Tema: FAQ's de PHP
Ver Mensaje Individual
  #121 (permalink)  
Antiguo 07/11/2004, 17:44
Avatar de Nefertiter
Nefertiter
 
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 21 años, 11 meses
Puntos: 9
una medio repetida pero nunca demas

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>
-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 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();
?>
Bueno con este ultimo humilde ejemplo damos por finalizada la FAQ sobre sesiones

Última edición por Nefertiter; 07/11/2004 a las 17:48