Я разрабатываю аналитику script, которую люди смогут добавить на свою страницу, чтобы отслеживать данные посетителей. Одна из проблем, с которыми я столкнулась, - это способ отслеживания отдельных сеансов, когда они просматривают какую-то страницу из частного браузера (I.e. Incognito).
Это script, который я использую, чтобы посмотреть, будет ли кто-нибудь наблюдать, если кто-то был активным более 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'];
}
}
Этот script работает безупречно, когда пользователь просматривает мою страницу из обычного браузера (IE. Chrome Incognito), однако, когда они просматривают ее на iPhone, в режиме частного просмотра, каждый раз, когда они обращаются к новой странице, создается новый сеанс - проблема, которую у меня нет, если смотреть иначе.
Итак, теперь мой вопрос: я знаю, что просмотр страниц в частном браузере достигается за счет временного кэширования, который очищается после закрытия браузера, однако почему это происходит, даже когда браузер не закрыт, открывая ссылку уничтожает их предыдущую сессию, даже когда ссылка ведет на другую страницу с тем же script на странице?
Есть ли обходной путь к этому?
EDIT:
Я должен отметить, что этот script помещается в php файл с заголовком application/json
, который также будет использоваться как файл JavaScript.