Piwik:如何跨域(PHP/JS)跟踪访问者(用户ID)
Piwik: How do I track a visitor (User ID) across domains (PHP/JS)?
我想将当前访问者的IP链接到指定的用户ID(通过PHP),Piwik应该在几个(子)域中跟踪该用户ID。
有几个(子)域,我想给登录secure.example.com的访问者(IP)一个唯一的UserID,以便在所有其他域上跟踪他。登录时的链接"IP->UserID"应使用PHP(Piwik Tracking PHP Client->setUserId)。所有域(包括登录后的secure.example.com)上的"正常"页面跟踪应该基于JavaScript(Piwik JS跟踪片段)。
示例域:
- www.example.com(站点ID 1)
- support.example.com(站点ID 2)
- secure.example.com(站点ID 3)
- www.anotherexample.com(网站ID 4)
我当前的PHP登录跟踪代码(在secure.example.com/login上调用):
<?php
require_once 'PiwikTracker.php';
$siteId = 3;
$apiUrl = 'http://piwik.example.com/';
$userId = '[TESTUSER]';
$piwik = new PiwikTracker($siteId, $apiUrl);
$piwik->enableCookies('*.example.com');
$piwik->setIp($_SERVER['REMOTE_ADDR']);
$piwik->setUserId($userId);
$piwik->doTrackEvent('Login', 'Login', $userId);
?>
所有其他页面和域的JS跟踪代码(siteId更改):
<script type="text/javascript">
var _paq = _paq || [];
(function(){ var u="//piwik.example.com/";
_paq.push(['setSiteId', 1]);
_paq.push(['setCookieDomain', '*.example.com']);
_paq.push(['setDomains', '*.example.com']);
_paq.push(['setTrackerUrl', u+'piwik.php']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.type='text/javascript'; g.defer=true; g.async=true; g.src=u+'piwik.js';
s.parentNode.insertBefore(g,s); }
)();
</script>
在Piwik config.ini.php中,我设置了以下值:
[Tracker]
enable_fingerprinting_across_websites=1
use_third_party_id_cookie = 1
visit_standard_length = 1800
window_look_back_for_visitor = 86400
我的问题是:当我登录到secure.example.com,然后访问support.example.com(或www.example.com等)时,Piwik不会将这些访问链接到我之前设置的UserID。此外,如果我覆盖当前访问者的UserID,它在Piwik后端不会更改。
从您尝试做的事情的描述来看,您可能会从设置的无状态状态中受益。我的后端也使用PHP。
JWT似乎很适合你。JWT本质上是一个加密的JSON令牌,您将其提供给客户端,然后客户端将令牌与每个请求一起发送给服务器,服务器验证该令牌,而不是试图维护会话。这意味着你可以让客户端将该令牌发送到你的任何一个域,并有一个标准系统来验证来自该客户端的任何请求。您可以将某些域甚至域内的区域列入白名单。
我已经链接了下面的白皮书。以及与之相关的其他一些相关链接。
请注意,建议在http请求标头中发送令牌。我使用授权承载标头。但我看到一些使用cookie的实现,他们建议不要以查询字符串的形式发送。
可以肯定的是,这就是大型组织如何在网上如此彻底地跟踪你的原因。
无状态设计的设置非常有趣,因为需要对向后端发出的每个请求进行身份验证。
希望这能有所帮助,如果你有任何问题,请告诉我。
JWT最佳实践
JWT白皮书
JWT索赔
JWT当前最佳实践(这可能是重复的,但我无论如何都读过)
- 动态分配GA增强型电子商务跟踪器
- 跟踪在页面加载时应用内联样式的JavaScript
- 同步调用,直到用户通过angular验证为访问者
- 跟踪用户点击Adsense广告的IP地址
- 跟踪jqplot垂直折线图的鼠标位置
- 有没有可能确定我博客的访问者的性别
- 点击facebook像素跟踪注册(JS/JQUERY代码)
- 有没有一种方法可以从URL跟踪请求的域
- Javascript-在视频中跟踪鼠标位置
- 在Google Analytics中跟踪用户,但只能在两个操作之间跟踪
- Piwik:如何跨域(PHP/JS)跟踪访问者(用户ID)
- 跟踪网页上访问者的点击行为
- 使用谷歌分析跟踪不同域的访问者
- 跟踪访问者上次查看的项目
- 如何在html javascript中跟踪访问者ip
- 如何创建Google Analytics事件跟踪来记录访问者退出网站之前最后关注的表单字段
- 只进行一次跟踪像素加载(每次访问者点击)
- 用于跟踪访问者使用的关键字的Java脚本,该脚本将引导到我的网站
- 方法在不使用外部提供程序的情况下跟踪Intranet页面上的访问者计数
- 个人资料页面用用户自己的分析代码跟踪访问者