gpt4 book ai didi

php - 记住 PHP session 隐私浏览

转载 作者:IT王子 更新时间:2023-10-28 23:54:33 25 4
gpt4 key购买 nike

我正在开发一个分析脚本,人们可以将其添加到他们的页面以跟踪访问者数据。我遇到的一个问题是设计一种方法来跟踪个人的 session ,当他们从私有(private)浏览器(即隐身浏览器)查看某人的页面时。

这是我用来查看是否有人观察某人是否活跃超过 30 分钟的脚本,如果有,将创建一个新 session ,如果没有,则他们将恢复之前的 session 。

        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'];
}
}

当用户从常规浏览器(IE。Chrome Incognito)查看我的页面时,此脚本可以完美运行,但是当他们在 iPhone 之类的设备上查看它时,在隐私浏览中,每次他们访问新页面,新 session 呈现 - 以其他方式查看时我没有遇到的问题。

那么我的问题是,我知道在私有(private)浏览器中查看页面是通过临时缓存实现的,临时缓存会在浏览器关闭后被清除,但是为什么即使浏览器没有关闭,打开一个链接即使链接指向另一个页面,页面上使用相同的脚本,也会破坏他们之前的 session ?

有解决办法吗?

编辑:我应该注意到,这个脚本被放置在一个带有标题 application/json 的 php 文件中,也被用作 JavaScript 文件。

最佳答案

如果我们先看php session documentation

A visitor accessing your web site is assigned a unique id, the so-called session id. This is either stored in a cookie on the user side or is propagated in the URL.

其次,什么mozilla support谈到隐私浏览(其他浏览器几乎相同)

What does Private Browsing not save? Cookies!

现在答案很明确了:浏览器没有保存 php 用来检索相应 session 的任何 cookie。

Is there a workaround to this?

$_SERVER 变量保存可以被视为唯一的数据。例如,尝试将 REMOTE_ADDR 与来自 HTTP_USER_AGENT 的解析数据结合使用并对其进行增删改查(可能是数据库)。

一些额外的信息

关于php - 记住 PHP session 隐私浏览,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30475878/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com