Php 我能确定下载我的程序的用户是否真的安装了它吗?
我制作了一些软件,可以免费下载,希望它能继续流行。当他们向我发送流量时,我向几个附属公司支付费用,现在的工作方式是,我给每个附属公司一个唯一的链接,只有当我的软件实际下载时,附属公司才能获得积分。 然而,如果我能够跟踪用户是否实际安装了软件,那将是最理想的。是否有一些方法可以做到这一点而不需要用户注册软件?(请记住,我需要知道该用户是由哪个分支机构推荐的) 最初,我想在用户的浏览器上创建一个带有分支机构ID的cookie,然后当软件安装完成时,它会打开一个浏览器显示一个感谢页面,在这一点上,我可以阅读cookie并找出该用户与哪个分支机构绑定。但是,如果使用除用户默认浏览器以外的任何浏览器下载软件,则此功能不起作用 我的另一个想法是将用户的IP地址存储在数据库中,然后在打开“谢谢”页面时将其匹配,但如果用户是大型网络的一部分,例如在大学,这将无法很好地工作Php 我能确定下载我的程序的用户是否真的安装了它吗?,php,cookies,Php,Cookies,我制作了一些软件,可以免费下载,希望它能继续流行。当他们向我发送流量时,我向几个附属公司支付费用,现在的工作方式是,我给每个附属公司一个唯一的链接,只有当我的软件实际下载时,附属公司才能获得积分。 然而,如果我能够跟踪用户是否实际安装了软件,那将是最理想的。是否有一些方法可以做到这一点而不需要用户注册软件?(请记住,我需要知道该用户是由哪个分支机构推荐的) 最初,我想在用户的浏览器上创建一个带有分支机构ID的cookie,然后当软件安装完成时,它会打开一个浏览器显示一个感谢页面,在这一点上,我可
有什么建议吗?我敢大胆地猜测,你使用饼干的想法是最好的。用户不太可能使用默认浏览器以外的其他工具来下载软件,除非他们正在安装一台新计算机,并且尚未开始安装他们选择的浏览器
如果您不介意更改字符串并重新编译每个分支的软件,您还可以分发为每个分支打开特定链接的不同可执行文件。您应该能够在应用程序第一次执行时将HTTP GET请求静默地发送回您的主服务器-基本上是ping返回主服务器,而且根本不打开任何浏览器。您甚至可以发送唯一的设备ID以确保这是新设备。您可能希望在本地数据库中记住此事件,而不是每次都发送此事件 请注意,要使其工作,应用程序必须具有AndroidManifest.xml中列出的权限 不过,关于隐私还有一个问题:你应该让用户清楚,你可以回家 我的另一个想法是将用户的IP地址存储在数据库中,然后在打开“谢谢”页面时将其匹配,但如果用户是大型网络的一部分,例如在大学,这将无法很好地工作 向每个用户发送带有个性化名称的安装程序(例如binary01、binary02、binary03…)。让安装程序在下载时读取自己的名称,并将其作为GET参数放入感谢页面,即
http://www.yoursite.com/thankyou?exe=binary03
服务器上的二进制文件总是相同的,只有一个文件,但下载程序会为每个分支机构报告不同的名称(或者您可以保留同一个二进制文件的多个副本,但保持同步比较困难)
例如,这可能是一个下载链接:
<?php
// Download URL, of the form http://www.yoursite.com/download.php?aff=AffName
// You can rewrite this with Apache's mod_rewrite and have .../filename-AffName.exe
$affiliates = array(
// You can keep these in a database
"widgets" => "Widgets'r'us",
"foobar" => "Foo's Software Bar",
);
$aff = isset($_GET['aff']) ? $_GET['aff'] : 'unaffiliated';
$base = "YourBinary";
$ext = '.exe';
$file = $base.$ext;
$name = $base.'-'.$aff.$ext;
Header("Content-Disposition: attachment; filename=" . urlencode($name));
Header("Content-Type: application/force-download");
Header("Content-Type: application/octet-stream");
Header("Content-Type: application/download");
Header("Content-Description: File Transfer");
Header("Content-Length: " . filesize($file));
readfile($file);
?>
这篇文章在哪里提到了android?嗯,不知怎的,我在心里跳过了这个。但是,在家里ping是一个普遍的想法,也可以应用于其他应用程序和操作系统。实际上,我为移动应用程序找到了一些很好的解决方案……但遗憾的是,我的是一个桌面应用程序。主要问题是将用户的web会话与下载的应用程序链接。我认为lserni的答案是将信息从web传递给安装人员的最简单(唯一?)的方法。我认为这将是最有效的解决方案。唯一需要担心的是用户更改名称…但这并不常见…是吗?“千载难逢”似乎很合适:-)我实际上看到不少人不更改默认浏览器(ie),只是在桌面上有一个chrome/firefox快捷方式:/