获取可重复唯一标识符的Javascript或PHP方法?

时间:2012-11-12 14:31:12

标签: php javascript web-services cross-browser uniqueidentifier

我试过搜索,但没有找到任何我认为正是我正在寻找的东西,所以总之,我很抱歉,如果这是一个重新发布。

我目前正在寻找某种ID或GUID类型ID来识别用户机器或用户或类似的东西每次(没有登录到任何登录系统)他们可以获得与之直接相关的ID他们。这可能没有意义所以请继续......

基本上我希望他们每次点击某个应用程序即时编写的分析部分时都会获得相同的ID。我可以访问服务器端脚本,对我来说最快和最简单的是PHP,我也一直在研究它,但似乎无法找到一种方法来使该唯一ID可重复。

我真的不想依赖饼干,这就是为什么我想尝试制作这个可重复的ID,我知道它是一个很长的镜头,但是在技术上有些东西我可能不太了解(也许flash或者什么)每次访问页面时都能够反复获取该机器/用户/ mac地址的ID?

我还将存储会话的典型GUID(已经完成),但是硬件部分是Id,就像其他ID以某种方式与USER,PC,MAC等相关。

TLDR: 有没有人对如何获得可重复的标识符有任何想法(当每次访问页面时,同一台机器或用户访问时都会使用相同的字符串)?有没有我可能没想过的技术可以做到这一点,主要是跨浏览器可以做到这一点,我想我已经用完了java脚本选项,可能像flash或HTML5(虽然我会喜欢它可以跨浏览器访问)或甚至某种API或服务?

是否有一些字段可以在某种程度上可靠地连接和编码,即使它不是100%万无一失?闪存或其他技术可以抓住机器独有的东西吗?有没有其他一些非标准的技术可以做到这一点,比如动作脚本或VBScript(虽然我甚至不知道这是否仍然有效)或者其他什么东西?

非常感谢,如果我没有看到明确或帖子太长,我很抱歉:)

1 个答案:

答案 0 :(得分:-2)

如果您使用$_SERVER数组,则可以读出一些客户特定的信息。像主机名,IP和东西。在找到适合您足够独特需求的客户端信息组合后,您只需将其哈希,并将其存储在某处以供进一步使用,例如在文件,数据库或APC等缓存中。

示例:

$strUserId = $_SERVER['REMOTE_HOST'] . $_SERVER['HTTP_USER_AGENT'];
$strUserId = hash( 'sha256', $strUserId );

if( clientExists( $strUserId ) ) {
  $oSomeData = loadClientData( $strUserId );
}
else {
  $oSomeData = new Stuff();
}

$oModifiedData = doStuffWith( $oSomeData );

saveClientData( $strUserId, $oModifiedData );

问题是,具有相同IP和相同浏览器(-version)的2个用户可以获得相同的ID。此外,如果用户返回新的主机名或浏览器版本,他将获得一个新ID。

如果不在客户端存储某些信息,则无法安全。