miércoles, 11 de enero de 2012

27. Sesiones de control

Holaaaaaaa a todos!! Feliz Año!! Cuanto tiempo… agradezco vuestra paciencia, no tengo excusa… pero estoy trabajando en un proyecto muy curioso sobre PHP, consiste en un motor de búsquedas sobre manuales gratuitos, espero tenerlo dentro de nada en la red y ya os diré el nombre de la página. Serán manuales de todo tipo, o eso es el objetivo que quiero, que sea muy simple que no se tenga que registrar nadie, que no haya limites de descarga de manuales, etc. para eso he tenido y tengo que trabajar las directivas de seguridad puesto que va a ser un sitio libre donde cualquiera pueda acceder no quiero que ningún cabr@n me fastidie.
Bueno vamos a seguir este post lo he dedicado a las sesiones de control. Es uno de los temas para mí más rollo, pero sin embargo uno de los más importantes, la mayor parte son apuntes que cogí de mi profesor Jesús Nuñez, estoy segura que con los ejemplos que voy a poner lo veréis más claro. Sin embargo, primero tengo que decir que es una sesión de control, para que sirve y de ahí las cookies… bueno que es rollo, pero luego la práctica es muy sencilla.
¿Qué es una sesión de control? Una sesión de control es el intervalo de tiempo que permanece un usuario en nuestro sitio visitando las páginas hasta que cierra sesión o cierra el navegador. Este rastreo que hace el usuario se guarda en un parámetro o una ID. ¿Para qué sirven las sesiones de control? Imaginaros que un usuario accede a una tienda virtual y visita las diferentes páginas insertando artículos al carrito de compra, el usuario está totalmente controlado mediante la ID. También cuando accedemos a nuestro correo online vemos que visualmente es diferente a otros usuarios. La ID es única para cada usuario. El usuario puede ver en el historial las páginas visitadas gracias a la ID.
PHP tiene la posibilidad de crear una variable de sesión de tres formas:
•    Mediante la función session_start(); Lo vemos mediante un ejemplo:
<?php
session_start();
if ($_SESSION['acceso']!="1")
{
header("Location:index.html");
exit;
}
echo "Bienvenido a la página privada";
echo "<a href=salir.php>Salir del sistema</a>";
?>
 Lo que hace esta función es comprobar si existe una ID, si no la hay la crea, si la hay lo que hace es cargar las variables de sesión registradas
•    Registrando una variable de sesión. Lo podemos configurar para que esto ocurra de forma automática para ello modificaremos el archivo php.ini

Por defecto aparece desactivado, para activarla suprimimos el 0 y le indicamos un 1.
Y alternativamente también podemos embeber la sesión mediante un enlace:
<a href=”link.php?<?=SID?>”> ?>”>
Aunque es más sencillo habilitando session.use_trans_sid del archivo php.ini.
•    Y la tercera forma es configurar la opción session.auto_start del archivo php.ini para empezar una automática:

Debemos configurarlo como verdadero, es decir, indicarle el valor de 1. Y después de iniciada una sesión lo que tenemos que hacer es registrar las variables de sesión:
$var=5;
session_register(“mivar”);
session_register (“mivar1”, “myvar2”);
Porque con el fin de que se pueda seguir la pista de una variable de un script a otro necesitamos registrarla con una llamada a la función session_register. Podemos registrar más de una variable de una vez. Por lo tanto empezamos la sesión, creamos las variables de sesión y usamos las variables de sesión:
$var
$HTTP_SESSION_VARS [“var”]
$resultado = session_is_registered(“var”);
Para desregistrar las variables y destruir la sesión se utiliza session_unregister(“var”). Con esta función solo podemos registrar una sola variable de sesión, con session_unset() desregistramos todas las variables de sesión de una vez. Y para limpiar la ID de sesión utilizamos session_destroy.
Vamos a verlo sobre un ejemplo. Este ejemplo está formado por tres páginas. La primera página la vamos a llamar page1.php, cuyo código es el siguiente:

En el ejemplo empezamos una sesión, registramos las variables con el nombre de var. Observamos que al empezar la sesión, después registramos la variable de sesión, a continuación le damos un valor, en este caso es un string. Si probamos la aplicación:

Vemos que aparece el contenido que lleva en el interior la función echo y un vínculo que nos lleva a la siguiente página. La página siguiente la llamamos page2.php:

Empezamos la aplicación iniciando la sesión para que la variable también este accesible. En este script el valor de la sesión se mantiene porque se pasa mediante la sesión id que empezamos con session_start(). Pero después de usar la variable utilizamos la función session_unregister para desregistrar la variable. De este modo la sesión aunque exista pero la variable var ya no estará registrada y por lo tanto ya no pertenece a la sesión por lo que no aparecerá. Si probamos el ejemplo page2.php:

Aparece el contenido de la variable var, pero la hemos desregistrado posteriormente. Por lo que al pasar a la página tres ya no aparece el contenido de la variable var:

Aunque hayamos empezado la sesión con session_start en el archivo page3.php ya no aparecerá porque la hemos desregistrado en el archivo page2.php. El código del archivo page3.php es el siguiente:

Que finaliza con session_destroy que lo que hace es destruir la sesión.
Bueno para finalizar os voy a proponer una práctica para entender mejor que son y como trabajan las sesiones de control. Consiste en hacer una pequeña aplicación para autentificarse en la web, para ello crearemos una base de datos con una tabla a la que llamaré registro, esta tabla le añadiré contenido, por ejemplo, dos campos que se llamen usuario y password y le añadiremos contenido al campo como muestro en el siguiente ejemplo (vosotros lo podéis crear como queráis):
create table registro    (
    usuario    varchar (10) not null,
    password    varchar (30) not null,
        Prymary key (usuario)
);
insert into registro values
    (‘lennon’, ‘12345’);
insert into registro values
    (‘paul’, ‘9*12F’) );
La práctica va consistir en tres archivos: register.php, miembros.php y logout.php. El primer archivo register.php va a ser un formulario sencillo en el que tendremos que insertar nuestro usuario y contraseña y al darle al botón enviar si los datos son correctos nos llevará a una página en la que nos indicará que nos hemos registrado correctamente y un vínculo en el que podamos deslogearnos, es decir, cerrar la sesión. Si por el contrario no le indicamos bien los datos nos redireccionará a una página en la que nos indica que nuestros datos de usuario y contraseña no son correctos. Fijaros que el archivo miembros.php debe contener el código tanto para si insertamos bien los datos o no. Y por último el archivo logout.php que nos cerrará o destruirá nuestra sesión. En el próximo post daré la solución, vosotros mismos podéis crear vuestra aplicación y si queréis me la podéis hacer llegar y la publico en el blog. Así que hasta el próximo post. Hasta luego!

1 comentario:

  1. hola de nuevo, k bien q aun sigas con mas tutoriales de php, seguire todos los pasos q indiques aki.
    saludos

    ResponderEliminar