在主站点上,通过 onpagehide 侦听器 - 当用户离开或关闭页面时触发,我通过
navigator.sendBeacon('/jx/', JSON.stringify({md:'v', po:'stats', rf:document.referrer, id:this.id, iframe:(window.frameElement && 1)}));
因此,我在数据库中收集统计信息......
如果网站是通过 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);

您的 cookie 必须具有 SameSite=None 和 Secure 属性。这意味着当向您的站点发出请求时可以发送 cookie,即使该请求不是来自您的页面。
也就是说,
session_set_cookie_params(['samesite' => 'None', 'secure' => true]);它应该有所帮助。这是因为该站点在另一个站点的 iframe 中打开。如果主机匹配,则没有问题,始终发送 cookie。但如果主机不同,cookie 不会发送到服务器,会话会重新启动。