Cookies

  • August 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Cookies as PDF for free.

More details

  • Words: 1,148
  • Pages: 5
cuando se cierra el navegador.

Introducción Mucho más sencillo de lo que uno imagina, es hacer que una sesión caduque en forma automática cuando el usuario cierre el navegador. En principio, vamos a definir a que nos referimos con cerrar el navegador. El servidor entenderá que el usuario cerró el navegador cuando ya no se encuentre visitando ninguna de las páginas de nuestro sitio. Es decir, si un usuario que para navegar nuestro sitio abrió al menos 2 páginas en 2 ventanas diferentes, el servidor considerará que cerró el navegador cuando hasta la última ventana sea abandonada. Ya sea porque el usuario la cerró o porque fue hacia otro sitio que no es el nuestro. Entonces, para que la sesión caduque al cerrar el navegador, habrá que, por un lado, forzar al php.ini a que propague la sesión solamente en cookies y por otro lado, asignarle a ésta, una duración cero. Para forzar al php.ini hay dos formas: modificar el php.ini directamente o cambiar los valores desde nuestro script. Opción 1 Configurar el archivo de inicio de php (php.ini) en forma directa. Si tienes acceso a este archivo, habrá que buscar y cambiar el valor a: session.use_trans_sid = 0 session.use_only_cookies = 1

Esta última, justamente será la que indicará que la sesión debe propagarse solo a través de cookies. Opción 2 Cambiar la configuración del php.ini desde nuestro script php. Esta opción consiste en forzar al php.ini desde nuestro script php (No todos los servidores tienen habilitada esta opción. Si el servidor no es propio, por las dudas, consulta con tu proveedor). Para hacerlo, utilizaremos la función

ini_set()

ini_set("session.use_trans_sid","0"); ini_set("session.use_only_cookies","1");

Ahora solo restará, cambiar el parámetro de duración a la cookie de la sesión. Esto lo haremos en nuestro script con la siguiente instrucción: session_set_cookie_params(0, "/", $HTTP_SERVER_VARS["HTTP_HOST"], 0); Con lo cual estaremos indicando una duración de 0 (cero) segundos. Esto significará que durará hasta que termine el script. Por fin, hemos llegado al código: Cierre de sesión al cerrar el navegador en PHP: módulo de control de datos

Verás reflejados los cambios al script anterior, indicados en negritas. Estos cambios serán también los que se apliquen al módulo de seguridad. De todas formas, aquí te cargo los dos códigos.

Cierre de sesión al cerrar el navegador en PHP: módulo de control de datos Verás reflejados los cambios al script anterior, indicados en negritas. = 600) { //si pasaron 10 minutos o más session_destroy(); // destruyo la sesión header("Location: index.php"); //envío al usuario a la pag. de autenticación //sino, actualizo la fecha de la sesión }else { $_SESSION["ultimoAcceso"] = $ahora; }

} ?>

header (PHP 3, PHP 4 >= 4.0.0) header -- Manda una cabecera HTTP

Descripción int header ( string string) La función header() se utiliza al comienzo de un fichero HTML para enviar las cadenas de texto de la cabecera HTTP. Consulte la Especificación HTTP 1.1 para obtener más información sobre las cabeceras http. Nota: Recuerde que la función header() debe llamarse antes de que se genere salida alguna, bien con etiquetas HTML normales o con PHP. Un error muy frecuente consiste en leer código con include() o con auto_prepend, y que dicho código inserte espacios o líneas en blanco antes de llamar a header(). Hay dos casos especiales de llamadas a header. La primera es la cabecera "Location". No sólo envía esta cabecera al navegador, sino que también devuelve un código de estado REDIRECT a Apache. Desde el punto de vista del programador de scripts esto no debería ser importante, pero para la gente que comprende las interioridades de Apache sí puede serlo. header("Location: http://www.php.net"); /* Redirect browser to PHP web site */ exit; /* Make sure that code below does not get executed when we redirect. */

El segundo caso especial se produce con cualquier cabecera que comience con la cadena, "HTTP/" (las mayúsculas no son significativas). Por ejemplo, si tiene la directiva ErrorDocument 404 de Apache apuntando a un script PHP, es una buena idea asegurarse de que su script de PHP genera realmente un 404. La primera cosa que debe hacer en su script sería: header("http/1.0 404 Not Found");

Los scripts de PHP a menudo generan HTML dinámico que no debe almacenarse en la caché del navegador cliente o en la caché de cualquier proxy situado entre el servidor y el navegador cliente. Se puede obligar a muchos proxies y clientes a que deshabiliten el almacenamiento en caché con header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified header("Cache-Control: no-cache, must-revalidate"); //

HTTP/1.1 header("Pragma: no-cache"); HTTP/1.0

//

404 File not found!"); }     //Gather relevent info about file     $len = filesize($file);     $filename = basename($file);     $file_extension = strtolower(substr(strrchr($filename,"."),1));     //This will set the Content­Type to the appropriate setting for the  file     switch( $file_extension ) {           case "pdf": $ctype="application/pdf"; break;       case "exe": $ctype="application/octet­stream"; break;       case "zip": $ctype="application/zip"; break;       case "doc": $ctype="application/msword"; break;       case "xls": $ctype="application/vnd.ms­excel"; break;       case "ppt": $ctype="application/vnd.ms­powerpoint"; break;       case "gif": $ctype="image/gif"; break;       case "png": $ctype="image/png"; break;       case "jpeg":       case "jpg": $ctype="image/jpg"; break;       case "mp3": $ctype="audio/mpeg"; break;       case "wav": $ctype="audio/x­wav"; break;       case "mpeg":       case "mpg":       case "mpe": $ctype="video/mpeg"; break;       case "mov": $ctype="video/quicktime"; break;       case "avi": $ctype="video/x­msvideo"; break;       //The following are for extensions that shouldn't be downloaded  (sensitive stuff, like php files)       case "php":       case "htm":       case "html":       case "txt": die("Cannot be used for ". $file_extension ."  files!"); break;       default: $ctype="application/force­download";     }     //Begin writing headers     header("Pragma: public");     header("Expires: 0");     header("Cache­Control: must­revalidate, post­check=0, pre­ check=0");     header("Cache­Control: public");      header("Content­Description: File Transfer");

         //Use the switch­generated Content­Type     header("Content­Type: $ctype");     //Force the download     $header="Content­Disposition: attachment; filename=".$filename.";";     header($header );     header("Content­Transfer­Encoding: binary");     header("Content­Length: ".$len);     @readfile($file);     exit; } ?>

Related Documents

Cookies
October 2019 46
Cookies
August 2019 38
Cookies
November 2019 44
Cookies
June 2020 28
Cookies
December 2019 36
Cookies
June 2020 21