Inicio / Wikis / Tutoriales / Manejo de Sesiones en PHP - No perder información

Manejo de Sesiones en PHP - No perder información

(26 opiniones)
Tutorial creado por Mononeurona. Extraido de: http://www.mononeurona.org/index.php?idp=208
27 de Octubre de 2005
PHP

2 - No perder información

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.
Valora este capítulo: (26 opiniones)
Autor y licencia de 'Manejo de Sesiones en PHP - No perder información'
Mononeurona Extraído de: http://www.mononeurona.org/index.php?idp=208

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.
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.

Opiniona sobre 'Manejo de Sesiones en PHP - No perder información' (26)

Tu nombre debe tener tres caracteres como mínimo.
Es necesario que te des de alta con una cuenta de correo válida.
Es necesario que te des de alta con una cuenta de correo válida.
El contenido del título de tu opinión debe tener tres caracteres como mínimo.
Es obligatorio que selecciones una valoración del recurso.
El contenido del comentario de tu opinión debe tener tres caracteres como mínimo.

Opina sobre este tutorial



* Valoración:
* Nombre:
* Correo electrónico:
* Título:
* Comentario:

Wikis relacionados con 'Manejo de Sesiones en PHP - No perder información'

PHP se ha convertido en el lenguaje de facto de Internet y no es difícil... Más »
PHP es un lenguaje en que usualmente el tipo de dato de una variable no... Más »
PHP es un lenguaje de programación diseñado específicamente para aplicaciones Web; las características más destacables... Más »
PHP es un lenguaje de programación diseñado específicamente para aplicaciones Web; las características más destacables... Más »
Un elemento que usualmente se extraña en el lenguaje JavaScript es la posibilidad de realizar... Más »
¿Estás seguro de que deseas eliminar este capítulo?