Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取可重复唯一标识符的Javascript或PHP方法?_Php_Javascript_Web Services_Cross Browser_Uniqueidentifier - Fatal编程技术网

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

获取可重复唯一标识符的Javascript或PHP方法?,php,javascript,web-services,cross-browser,uniqueidentifier,Php,Javascript,Web Services,Cross Browser,Uniqueidentifier,我试着搜索,但没有找到任何我认为正是我在寻找的东西,所以简而言之,如果这是一个重新发布,我很抱歉 我目前正在寻找某种ID或GUID类型的ID,它可以识别用户机器或用户或类似的东西,每次(不登录任何登录系统)他们都可以获得与他们直接相关的ID。这可能没有意义,所以请继续阅读 基本上,我希望他们在每次点击某个页面时,都能获得相同的id,以获取即时通讯应用程序的某种分析部分。我可以访问服务器端脚本,对我来说最快、最简单的是PHP,我也一直在研究它,但似乎找不到一种方法使这个唯一的ID可以重复 我真的不

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

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

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

我真的不想依赖cookies,这就是为什么我想尝试制作这个可重复的id,我知道这是一个很遥远的目标,但在一项技术中,是否有什么我可能不太了解的东西(可能是flash或其他东西),可以在每次访问页面时一遍又一遍地获取该机器/用户/mac地址的id

我还将为会话存储一个典型的GUID(已经完成了),但最难的部分是Id,就像其他Id一样,以某种方式与用户、PC、MAC等相关

TLDR: 有人对我如何获得可重复标识符有什么想法吗(当同一台机器或用户每次点击页面时访问同一个字符串)?有没有一种我可能没有想到的技术可以做到这一点,它主要是跨浏览器的,可以做到这一点,我想我已经用完了java脚本选项,可能是flash或HTML5(尽管我希望它可以跨浏览器访问),或者甚至是某种API或服务

即使不是100%万无一失,是否有一些字段可以可靠地进行连接和编码?flash或其他技术可以抓取机器或其他东西特有的东西吗?有没有其他一些非标准的技术可以做到这一点,比如动作脚本或VBScript(虽然我甚至不知道这是否仍然有效lol)或类似的东西


非常感谢,如果我没有理解清楚或者帖子太长,请道歉:)

如果您使用
$\u服务器阵列,您可以读取一些特定于客户端的信息。比如主机名、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)的用户可能会获得相同的ID。此外,如果用户返回时提供了新的主机名或浏览器版本,他将获得一个新ID


如果不在客户端上存储一些信息,您就不可能安全。

您所说的可重复唯一性是什么意思?!客户端的IP地址呢?或者创建具有唯一id的会话?您必须从三个选项中选择一个,1-使用该唯一id创建会话。2-使用用户ip和类似用户代理信息在数据库中保存唯一id。3-使用url传递唯一id,并使用get检索它。您不想将cookies与cookies一起使用这是保持跟踪用户的四种方法,否则是不可能的我的意思是,每次,无论间隔多长时间(包括如果cookies被清除),我都需要一个机器唯一的id。因此,将创建一个标识符,该标识符对于该机器/用户每次都是相同的。因此,如果用户A访问该站点并获得123的ID,那么每次访问该站点时,他们都会获得123。这就是为什么我认为它必须基于机器/用户,如果用户B访问该站点,每次他们得到321,即使他们清除了他们的cookie,等等。我知道这是一个奇怪的请求,但我不知道如何可靠地完成。我不能使用IP,因为如果他们在一家大公司,这将使所有用户都有相同的ID。我不确定我是否100%了解你的穆罕默德,但我感谢你的输入。请继续保持这些想法<代码>$\u会话
依赖于cookies。我的想法是正确的,如果说一个月后他们去了,$\u会话['id']或任何将生成的内容都不一样,对吗?我需要的东西,将是独特的用户和重复创建。它可以是东西的串联,然后可能进行编码(比如base64_encode或其他),每次生成时,用户/机器/任何东西的编码都必须相同。您可以对其进行配置,这样它就不依赖cookie,并且仍然使用该机制。此外,使用
session\u name()
可以将会话id设置为当前请求所需的任何字符串。根据我对PHP会话的理解,该id是随机生成的:(PHP.net:“session\u name()返回当前会话的名称。如果给定名称,则session\u name()将更新会话名称并返回旧的会话名称。”因此,您可以简单地用自己的内容覆盖它