php - por - navegacion privada safari
Recordando la navegación privada de sesión PHP (3)
Estoy desarrollando una secuencia de comandos de análisis que las personas podrán agregar a su página para rastrear los datos de los visitantes. Uno de los problemas con los que me he encontrado es idear una forma de rastrear las sesiones individuales cuando están viendo la página de alguien desde un navegador privado (es decir, incógnito).
Esta es la secuencia de comandos que estoy usando para ver si alguien observa si alguien estuvo activo durante más de 30 minutos, si es así, se creará una nueva sesión, de lo contrario, reanudarán la sesión anterior.
session_start();
$max_time = 1800;
$current = time();
if (!isset ($_SESSION[''Stationary''])){
$_SESSION[''Stationary''] = time();
$session = $_SESSION[''Stationary''];
}
if (!isset ($_SESSION[''Inactive''])) {
$_SESSION[''Inactive''] = time();
} else {
$session_life = $current - $_SESSION[''Inactive''] ;
if ($session_life > $max_time ) {
session_destroy();
session_start();
$_SESSION[''Inactive''] = time();
$_SESSION[''Stationary''] = time();
$session = $_SESSION[''Stationary''];
} else {
$_SESSION[''Inactive''] = time();
$session = $_SESSION[''Stationary''];
}
}
Este script funciona sin problemas cuando un usuario ve mi página desde un navegador normal (IE. Chrome de incógnito), sin embargo, cuando lo ve en un iPhone, en la navegación privada, cada vez que accede a una página nueva, se procesa una nueva sesión: - un problema que no tengo cuando lo veo de otra manera.
Entonces mi pregunta es, soy consciente de que ver páginas en un navegador privado se logra a través de la caché temporal que se borra una vez que se cierra el navegador, pero ¿por qué es que incluso cuando el navegador no está cerrado, abrir un enlace destruye su anterior sesión incluso cuando el enlace conduce a otra página, con el mismo script en la página?
¿Hay alguna solución para esto?
EDITAR: debería tener en cuenta que esta secuencia de comandos se coloca en un archivo php con la application/json
encabezado application/json
para ser utilizado como un archivo de JavaScript también.
Lamentablemente, no puedo comentar, así que solo estoy publicando este enlace aquí:
En este sitio, puede ver toda la información filtrada por su navegador. Están utilizando Javascript para algunos datos, pero eso no debería ser un problema, ya que la mayoría de los usuarios tienen Javascript activado de todos modos.
Esto es posible de lograr si usa ETags. Hay un artículo aquí que describe cómo funciona:
http://lucb1e.com/rp/cookielesscookies/
Los ETags son persistentes en todas las sesiones de navegación de incógnito, sin embargo, debe actualizar continuamente la sesión, ya que puede perderse al cerrar la ventana y volver a abrirla.
Debo añadir que hay acertijos étnicos con esto (pero no tengo ninguna fuente).
Si primero miramos la documentación de la sesión de php
A un visitante que accede a su sitio web se le asigna una identificación única, la llamada identificación de sesión. Esto se almacena en una cookie en el lado del usuario o se propaga en la URL.
En segundo lugar, qué dice el soporte de mozilla sobre la navegación privada (más o menos lo mismo para otros navegadores)
¿Qué no guarda la navegación privada? ¡Galletas!
Entonces, la respuesta está clara ahora: el navegador no está guardando ninguna de las cookies que usa php
para recuperar la sesión respectiva.
¿Hay alguna solución para esto?
Sí . La variable $_SERVER
contiene datos que pueden considerarse únicos. Por ejemplo, intente utilizar REMOTE_ADDR
combinado con datos analizados de HTTP_USER_AGENT
y CRUD (base de datos, probablemente).
Alguna información extra