我正在开发一个分析脚本,人们可以将其添加到页面中以跟踪访问者数据.我遇到的一个问题是设计一种方法来跟踪个人会话,当他们从私人浏览器(即Incognito)查看某人的页面时.
这是我用来查看某人是否有人活动超过30分钟的脚本,如果他们有,将创建一个新会话,如果没有,那么他们将恢复他们以前的会话.
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'];
}
}
Run Code Online (Sandbox Code Playgroud)
当用户从常规浏览器(IE.Chrome Incognito)查看我的页面时,此脚本可以完美运行,但是当他们在iPhone上进行查看时,在私人浏览中,每次访问新页面时,都会呈现新会话 - - 除非另有说明,否则我没有这个问题.
所以我的问题是,我知道在私人浏览器中查看页面是通过临时缓存来实现的,一旦浏览器关闭就会被清除,但是为什么即使浏览器没有关闭,打开链接也会破坏他们之前的会话,即使链接指向另一个页面,页面上有相同的脚本?
这有解决方法吗?
编辑:
我应该注意,这个脚本被放在一个php文件中,头文件application/json
也可以用作JavaScript文件.