12.170 cursos gratis
8.767.349 alumnos
Facebook Twitter YouTube
Busca cursos gratis:

Curso de MySQL con PHP

Autor: Ariel Alejandro Wagner
Curso:
9/10 (2 opiniones) |1754 alumnos|Fecha publicaciýn: 10/01/2011
Envýa un mensaje al autor

Capýtulo 12:

 Mecanismo de Control y Gestión de Sesiones

Para poder establecer una sesión entre una computadora servidor y una computadora cliente, se ha desarrollado un mecanismo de control a través del envío de sesiones mediante al menos dos modalidades. Una por URL y otra mediante Cookies. Según el método elegido, el servidor de esta forma, podrá establecer un proceso de negociación de sesión entre una computadora cliente y el servidor.

Por medio de la URL se pasan las variables o los datos de un punto a otro mediante dos técnicas GET o POST. Si se realiza en forma de GET, los datos se anexan a la dirección que apunta al recurso o si se utiliza POST, los datos se anexan en el encabezado de la solicitud de envío que es dirigida al recurso apuntado. Cuando un cliente se identifica en el servidor, el servidor envía hacia el cliente un código único de identificación y gestión de sesión llamado SID. El SID es un número que es asignado desde el servidor de forma aleatoria y es utilizado para gestionar la negociación. El SID se almacena en la computadora cliente temporalmente hasta que la computadora cliente abandona el recurso cerrando la sesión en el servidor. La computadora cliente tan solo preserva este número de identificación. Mientras que en el lado del servidor, el número es almacenado en conjunto a otros factores relacionados con las variables de la sesión y otros datos operativos de gestión interna del servidor.

En el caso del uso de Cookies, en la computadora cliente se almacena un pequeño archivo que guarda el número SID y otros parámetros relacionados con la expiración, las páginas o recursos dirigidos, etc. Estos últimos parámetros resultan ser opcionales excepto el número SID. A través de este pequeño archivo que genera una Cookie, el servidor puede identificar a la computadora cliente y puede de esta forma controlar la sesión entre ambas garantizando así la funcionalidad operativa. Sin embargo, el uso de Cookies podría estar condicionado debido a que muchos navegadores Web o, bien, no soportan Cookies, no los utilizan o no permiten el uso de Cookies.

Para evitar que este inconveniente condicione la funcionalidad del sistema, el lenguaje PHP utiliza un sistema que fuerza a utilizar ambos sistemas basados en URL o en Cookies. De esta forma, se garantiza de que en caso de no utilizar Cookies, el sistema siga operando utilizando URL por defecto como última alternativa.

Funciones – Control de Sesiones

Existen dos funciones importantes que permiten controlar el inicio o la destrucción de las sesiones llamadas session_start() y session_destroy(). En cada página donde se requiere de la sesión, se debe iniciar la sesión y resulta imprescindible iniciar el código asignando la función session_start(). Luego, podrá complementar el resto del código utilizando otras variables complementarias. Cuando desea destruir la sesión debido a que el recurso ha perdido el interés o el efecto deseado, deberá utilizar la función session_destroy() para concluir con este proceso. A continuación dejo dos ejemplos expuestos en la página principal de PHP.

<?php

// page1.php

session_start();

echo 'Bienvenido a la página #1';

$_SESSION['favcolor'] = 'verde';

$_SESSION['animal']   = 'gato';

$_SESSION['time']     = time();

// Esta sesión opera si la cookie es aceptada
echo '<br /><a href="page2.php">página 2</a>';

// O puede ser que la sesión ID sea necesaria

echo '<br /><a href="page2.php?' . SID . '">página 2</a>';

?>

<?php

// Inicializar la sesión.

// Si usa session_name("something"), ¡No se olvide esto ahora!

session_start();

// Quita todas las variables de las sesiones ahora.

$_SESSION = array();

// Si desea matar la sesión, también borre la sesión de la cookie. 

// Nota: ¡Esto destruirá la sesión y no los datos de la sesión!

if (ini_get("session.use_cookies")) {

    $params = session_get_cookie_params();

    setcookie(session_name(), '', time() - 42000,

        $params["path"], $params["domain"],

        $params["secure"], $params["httponly"]

    );

}

// Finalmente, destruye la sesión.

session_destroy();

?>

Para poder registrar y quitar el registro de las sesiones se utilizan dos funciones de control llamadas session_register() y session_unregister(). La función session_register() posee parámetros y permite registrar más de una variable a la vez, es decir, crear más de un registro de sesión a la vez. Así mismo, para destruir o quitar los registros se utiliza la función session_unregister() respectivamente.

<?php

// El Uso de la session_register() está fuera de uso

$barney = "Es un enorme dinosaurio púrpura.";

session_register("barney");

// El uso de $_SESSION es recomendado, para las versiones PHP 4.1.0

$_SESSION["zim"] = "Un invasor de otro planeta.";

// Esta es la manera vieja de uso $HTTP_SESSION_VARS
$HTTP_SESSION_VARS["Bob_esponja"] = "Él tiene los pantalones cuadrados.";

?>

Funciones – Control de Cookies

Para manipular envío de Cookies se utiliza desde el servidor una función llamada setcookie(). La función crea un pequeño archivo plano que contiene el número SID y puede contener otros parámetros adicionales tales como el  tiempo de expiración de la sesión, enlaces relacionados, etc. El primer parámetro es el nombre de la Cookie y por tanto suele ser utilizado para poder construir el archivo Cookie. El resto de los parámetros resultan ser opcionales y solo se los utiliza en casos donde se requiere un comportamiento específico para las sesiones entre el cliente y el servidor. Un comportamiento quizá más habitual es el control del tiempo de la sesión establecida.

bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )

<?php

$value = 'algo de algún lugar';

setcookie("TestCookie", $value);

setcookie("TestCookie", $value, time()+3600);  /* expíra en 1 hora */

setcookie("TestCookie", $value, time()+3600, "/~rasmus/", ".example.com", 1);

?>

En este trozo de código se puede observar tres formas tradicionales de escribir Cookies utilizando la función setcookie(). Nótese que el nombre de la Cookie como $name es el parámetro obligatorio, el resto resulta ser opcional. Sin embargo, en un parámetro llamado $expire se coloca el tiempo o ciclo máximo de la sesión. Si Ud., ajusta una sesión de 24 horas, la Cookie hará funcionar el control del acceso por tan solo 24 horas. Pasado el tiempo, la Cookie pierde vigencia y el servidor descarta el proceso de negociación. Esto a veces se hace como medida de seguridad operativa y para regular el consumo de ancho de banda de la red.

Consideraciones Específicas de las Cookies

El uso de las Cookies puede presentar limitaciones. El grado de racionalidad se centra exclusivamente en el tamaño de los archivos enviados. Los archivos Cookie tienen un determinado peso. La Cookie ideal no debería superar los 4Kb. Sin embargo, una Cookie de más de 2Kb puede acarrear inconvenientes también.

Además de la limitación en tamaño, hay que contar con la cantidad de Cookies posibles en el disco rígido de la computadora cliente que no debería superar los 20 archivos. Ello es debido a que el propio sistema de la computadora cliente no puede memorizar tantos enlaces a la vez. Se trata de una limitación implementada por razones de seguridad funcional.

Si utiliza cifrado de algún valor y lo almacena dentro de la Cookie, deberá tener sumo cuidado. La cantidad de caracteres que genera un cifrador puede ser muy grande y superar la cuota de tamaño dentro de la Cookie, lo cual inevitablemente, truncará la información. Por tanto, evite inflar demasiado sus Cookies.

Otro problema es el código o juego de caracteres. El uso de un juego apropiado para un determinado país podría ser perjudicial para otro país. Es por ello que se recomienda que utilice un juego de caracteres estandarizado, tal es el caso de la norma ANSI ’94. Quizá esta norma sacrifique ciertos tipos de caracteres, pero al menos, no fallará en las máquinas de los clientes.

Otro gran inconveniente es el bloque de las Cookies por parte de los navegadores. El bloqueo se suele utilizar como medida preventiva o de seguridad. Este hecho implica varios inconvenientes. Obligar al usuario a deshabilitar las Cookies para que nuestras Cookies se puedan almacenar en el disco de la computadora cliente. Al no poder registrarse la Cookie en la máquina cliente, resulta entonces, imposible gestionar las sesiones. Este problema directamente puede tener muchas lecturas negativas. Muchos usuarios podrían ignorarlas por falta de conocimiento o por miedo a los tan temidos SCAM[1], virus informáticos entre otros tantos flagelos informáticos. De hecho, no resulta muy efectivo explicar y detallar lo que el usuario debiera hacer para que el sistema opere correctamente. En estas aclaraciones dejamos nuestra impresión. Pueden prestarse a malas interpretaciones y confusión generalizada. Como diría Henry Ford, “…Si Ud., confecciona un manual complejo y charlatán, por más que su auto sea un avión, es probable que no lo venda jamás…”. En consecuencia, evítese complicarle demasiado la vida a los usuarios.

Ejemplo de  Control de Sesiones y Membrecía

ytj

La gestión de sesión básicamente es representada en un DFS. Ver figura derecha.

Dado que la carga de una página Web es Top-Down, las instrucciones se dan en un solo sentido. Esto caracteriza al sistema como un método estático. Es por ello que para dinamizarlo se utilizan distintos tipos de lenguajes embebidos. El lenguaje PHP es uno de ellos.

Analicemos el siguiente ejemplo de control de sesiones. El usuario completa los datos en el formulario y luego envía una solicitud al servidor para que este lo identifique. A su vez, la página carga antes de procesar dicha solicitud un proceso de inicio de sesión, llamado vulgarmente como Log In. Si el usuario no logra ser identificado, se rechaza la solicitud de identificación en conjunto a la sesión temporal creada al inicio de este proceso. Ahora bien, si el usuario es aceptado el proceso continúa preservando el espacio de sesión creada antes de proceder con dicha identificación. A partir de estos momentos, el usuario se encuentra identificado y con una sesión iniciada exitosa. Esto le permite operar dentro del recurso de forma satisfactoria.

Sin embargo, podría suceder un tercer problema. He aquí el por qué de la doble verificación. El problema podría darse durante el proceso de creación de sesión. Si la sesión no puede ser creada, por más que el usuario se haya identificado correctamente, la sesión se encuentra en un estado crítico. Para evitar potenciales problemas, se procede a cerrar la sesión si es posible y quitar la identificación del usuario. Esto normalmente se lo llama quitar sesión o Log Out. Así mismo, si el usuario decide abandonar la sesión, el proceso de quita de sesión utilizará el mismo mecanismo de control. La idea es quitar la identificación y destruir la sesión creada anteriormente.

Importante: En las versiones 5 en delante de PHP y algunas apariciones de las versiones de 4.1 de PHP, se incluyeron cambios radicales en los procesos de gestión de sesiones. Por tanto, el proceso que explico aquí y el que Ud., confeccionará en el práctico se basa en una versión 6 de PHP aunque podría funcionar perfectamente en la versión 5 de PHP.

Para permitir que la sesión se preserve todo el tiempo, se hace necesario cargar la función session_start() en cada una de las páginas que se requiera operar con variables de sesiones llamadas $_SESSION[‘varEjemplo’]. Estas mismas, ayudan a preservar los valores o datos de la sesión. Estos valores podrían ser los datos del usuario u otro tipo de información, como por ejemplo, el seguimiento de una sesión, de un carrito de compras, una operación determinada, etc. Todos ellos deberán permanentemente ser cargados, comparados, actualizados, etc., sus movimientos sin olvidar cargar la función session_start() previamente. La carga de dicha función debe colocarse en la primera línea de código embebido en una página dinámica PHP o estática HTML combinada, etc. Es decir, será la primera línea de proceso que debe ejecutarse antes que todo el cuerpo entero del archivo fuente. De esta forma el sistema funcionará correctamente. Si Ud., coloca la función session_start() en cualquier parte que no sea la primera línea de proceso, la operación de las sesiones no podrá ser controlada correctamente y puede que ni siquiera le funcione la sesión. Por tanto, téngase en cuenta este detalle.

Para eliminar la sesión, se requiere de una operación sencilla. Dado que las páginas son estáticas, al pasar a otra página el estado se pierde. No obstante, las variables podrían aún tener valores residuales. Para evitar este inconveniente, se recomienda utilizar como primera línea la función session_destroy() que permitirá destruir la sesión creada y luego agregar las variables para proceder a vaciarlas. Por tanto, se destruye la sesión y luego se vacían las variables. Esto garantizará que la sesión sea quitada de forma satisfactoria. Suele recomendarse para garantizar el cierre de sesión, redirigir la aplicación a otra página con las instrucciones adecuadas. Por tanto, mi recomendación es utilizar ésta última técnica.


[1]SCAM – Resulta ser un mecanismo de estafa o robo de información, acopio de claves, PIN y todo lo concerniente a mecanismo de identificación. Los piratas informáticos toman estos recursos para perpetuar delitos tales como estafas, compras con identidad de otra persona, violación de cuentas bancarias, distribución de correos masivos, bloqueos y jaqueo de toda clase, etc. Visite el sitio http://www.vsantivirus.com/scam-aol.htm Aquí encontrará artículos interesantes acerca de robos, timos, etc., informáticos.

Nuestras novedades en tu e-mail

Escribe tu e-mail:



MailxMail tratarý tus datos para realizar acciones promocionales (výa email y/o telýfono).
En la polýtica de privacidad conocerýs tu derechos y gestionarýs la baja.

Cursos similares a Curso de MySQL con PHP



  • Výdeo
  • Alumnos
  • Valoraciýn
  • Cursos
1. Windows. Instalación de Apache, MySQL y PHP
El proceso para instalar Apache en Windows es muy sencillo.  Con este video te... [12/10/10]
1.759
Curso con video
2. PHP y MySQL. Aplicaciones Web: PHP y base de datos MySQL (décima parte)
Programación de aplicaciones Web con PHP y MySQL. Ahora te enseñaremos a conectar a... [02/12/08]
3.751  
3. PHP y MySQL. Aplicaciones Web: base de datos MySQL I (séptima parte)
Programación de aplicaciones Web con PHP y MySQL Ahora estudiaremos la Base de... [02/12/08]
3.225  

ýQuý es mailxmail.com?|ISSN: 1699-4914|Ayuda
Publicidad|Condiciones legales de mailxmail