小编Bra*_*rad的帖子

记住PHP会话私密浏览

我正在开发一个分析脚本,人们可以将其添加到页面中以跟踪访问者数据.我遇到的一个问题是设计一种方法来跟踪个人会话,当他们从私人浏览器(即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文件.

php session

15
推荐指数
1
解决办法
4147
查看次数

标签 统计

php ×1

session ×1