Каждый раз присваивается новый id сессии
На основном сайте, через слушатель onpagehide - срабатывает когда пользователь уходит либо закрывает страницу, отправляю post запрос через
navigator.sendBeacon('/jx/', JSON.stringify({md:'v', po:'stats', rf:document.referrer, id:this.id, iframe:(window.frameElement && 1)}));
Таким образом, собираю статистику в бд...
Eсли сайт открыт черeз iframe окно. Все тоже работает и авторизация и тд. Но когда отправляется запрос перед закрытием страницы на которой сайт открыт в iframe. По какой та причине, каждый раз присваивается новый PHPSESSION id.
Получается записей в бд, от одного пользователя будет столько сколько раз он закрыл или обновил одну и туже страницу. Причина в том, что каждый раз меняется PHPSESSION при отправке.
Еще раз. Если сайт открыт в iframe и посмотреть на PHPSESSION - он статичный и не меняется, а если перед закрытием страницы отправить запрос на запись в бд. То в бд видно, что PHPSESSION каждый раз новый. С чем это связано?
Старт сессии во всех обращениях
session_set_cookie_params(null, '/', ".site.ru");
session_start();
define('SESSION_ID', session_id());
die(SESSION_ID);
Ответы (1 шт):
Ваши куки должны иметь атрибут SameSite=None и Secure. Он означает, что кука может отправляться при запросе на ваш сайт, даже если запрос не с вашей страницы.
То есть session_set_cookie_params(['samesite' => 'None', 'secure' => true]); должно помочь.
Это связано с тем, что сайт открыт в айфрэйме другого сайта. Если хосты совпадают, то проблем нет, кука отправляется всегда. Но если хосты отличаются, кука не отправляется на сервер и сессия стартует заново.
