Capitulos de este wiki
  1. 1 Manejo de Sesiones en PHP
  2. 2 No perder información

Manejo de Sesiones en PHP - No perder información

2 - No perder información

[editar]
Tutorial creado por Mononeurona. Extraido de: http://www.mononeurona.org/index.php?idp=208
27 de Octubre de 2005
A través de su historia, Microsoft ha producido buenos programas para el mundo, ¡Internet Explorer no es uno de ellos! Uno de sus muchos errores radica en que al llenar un formulario y dar el botón Back, los datos del formario se pierden. Imagínese llenar un largo formulario fiscal y luego de un error al enviarlo, dar Back y ver que toda la información se perdió! Para solucionar este inconveniente es necesario agregar la siguiente línea DESPUÉS de iniciada la sesión:


<?php
session_start();
header("Cache-control: private"); IE 6 Fix.
?>

Bien, veamos un ejemplo de como decirle a PHP que inicie una sesión si el login y el password de un usuario coinciden.  Primero crearemos la página acceso.html:

<html>
<head><title>:: Acceso ::</title></head>
<body>
<br />
<div style="text-align:center;"><form method="post" action="valida.php">
Introduzca su login: <input type="text" name="login" /> <br />
Introduzca su contraseña: <input type="password" name="password" /> <br />
<input type="submit" value="Enviar">
</form>
</div>
</body>
</html>


Como puedes ver, no hay nada esotérico en este archivo HTML, solamente lo usaremos para enviar dos valores a la página  valida.php. La cual luce así:


<?php
Inicio la sesión
session_start();
header("Cache-control: private"); Arregla IE 6
Voy por el login y el password
   $login = $_POST['login'];
   $password = $_POST['password'];
reviso si coincide
if ( $login
"mmontoya" && $password
"amex05") {
        
$_SESSION['estado'] = "logeado"
Coloco la variable de sesión 'estado'
           $msg = "<a href=\"adentro.php\">Bienvenido " . $login . ">></a>";
     
        } else {
     
         $msg = "Datos erroneos!!. <a href=\"acceso.html\">Inténtelo de nuevo.</a>";
     
        }
   
?>
<html>
<head><title>:: Valida ::</title></head>
<body>
<p style="text-align:center;"><?= $msg ?></p>
</form>
</body>
</html>


Bien, este script inicia la sesión (las primeras dos líneas), toma las variables que enviamos del formulario:

Voy por el login y el password
   $login = $_POST['login'];

Realiza una comparación entre los valores del formulario y dos strings:
if ( $login
"mmontoya" && $password
"amex05")

Esta linea quiere decir: "si la variable $login es igual a mmontoya y (&&) la variable $password es igual a amex05, haz lo siguiente". Si esta doble condición se cumple se crea la variable de sesión "estado": 
$_SESSION['estado'] = "logeado";   
Coloco la variable de sesión $_SESSION['estado']

Si la doble condición no se cumple (else), la variable $msg toma un valor diferente:



$msg = "Datos erroneos!!. <a href=\"acceso.html\">Inténtelo de nuevo.</a>";


Destruyendo una sesión
Ahora bien, si la doble condición se cumple, la página valida.php mostrará un link a la página adentro.php que es la siguiente:
<?php
Inicio la sesión
session_start();
header("Cache-control: private");
Arregla IE 6
?>
<html>
<head><title>:: Adentro ::</title></head>
<body>
<p style="text-align:center;">Tu estado de sesión es: <b><?= $_SESSION['estado'] ?></b></p>
</body>
</html>

Esta página simplemente imprime el valor de la variable de sesión $_SESSION['estado']

Esta variable estará siempre a disposición del Webmaster sin necesidad de estar colocándola oculta en un formulario o enviándola en el URL de cada página. Con las sesiones, es muy sencillo comprobar si alguien puede ver una página con acceso restringido en el Website:

<?php
Inicio la sesión
session_start();
header("Cache-control: private");
Arregla IE 6
       if (
$_SESSION['estado']
"logeado" ) {
    
           echo "<p>Usted está autorizado</p>";  todo esta bien
     
        } else {
     
         
header("Location: acceso.html");   largo de aqui !!
          echo "<html></html>";

        }
   
?>



¡Session rulezzz!

Además de mostrar el valor de la sesión, veremos una liga a la página salir.php que es la página que nos "saca" del sitio (logout):



<?php
Inicio la sesión
session_start();
header("Cache-control: private");
Arregla IE 6
  descoloco todas la variables de la sesión
 session_unset();
 
Destruyo la sesión
 session_destroy();
 
 Y me voy al inicio
 header("Location: acceso.html");
     echo "<html></html>";
   exit;
?>

Esta página borra las variables de sesión con la función session_unset(), destruye la sesión con session_destroy() y envia al usuario a la página de inicio con la función header(), es decir a acceso.html, "sacando" al usuario del sitio. Y voila!! hemos aprendido a manejar sesiones en PHP. En un próximo tutorial veremos como guardar y eliminar una sesión en una base datos (PostgreSQL o MySQL) y no en el directorio /tmp ¿Para que sirve esto?: Para manejar sesiones distribuidas entre varios servidores.
[editar]

25 opiniones

Gracias por miles

Mis más sinceras congratulaciones y agradecimientos....por fin lo que tanto necesitaba
Grandioso.

Realmente el primer empujon que deseaba, gracias!!!!.
Excelente, mejor no pudo ser.

Mil felicidaeds por ese gran manual, bastante claro y util
me sirve muchisimo para un proyecto que estaba desarrolando y no sabia como utilizar las sesion. Gracias nuevamente

fabian
hieluki. Com.
Genial!.

Excelente tranajo

ahora entendi todo

muchas gracias.
Gracias.

Ta bueno, acalra mucho para los que se estan inciando con php. Gracias!.
1 2 3 4 5 | siguiente >

Tutoriales relacionados con 'Manejo de Sesiones en PHP'

Las sesiones nos permiten almacenar y consultar información sobre un visitante sin necesidad de estar... Más »
PHPlib es un conjunto de clases que permiten de manera rápida y fácil manejar las... Más »

Autor y licencia de 'Manejo de Sesiones en PHP'


Tutorial de Mononeurona. Extraido de: http://www.mononeurona.org/index.php?idp=208 CopyLeft
Este trabajo está licenciado bajo la Creative Commons License. 1999-2005 © :: MonoNeurona.org ::
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.