如何为每位新访客创建唯一ID?

问题描述 投票:1回答:6

我的问题是如何为访问我网站的每个唯一访问者创建一个唯一的ID(将在URL的末尾,例如http://example.com/?id=12345)。我也想知道如何跟踪访问者的IP地址,以便他们只收到一个id /链接。换句话说,如何制作一个脚本,每个IP地址生成一个唯一的ID。简而言之,我想要一个为每个新访客生成唯一ID的脚本。例如:访问者1的id = http://example.com/?id = 12345,访问者2的id = http://example.com/?id = 77369,依此类推。谢谢。

php scripting uuid
6个回答
6
投票

最简单的事情可能就是使用session_startsession_id

 session_start();
 $id = session_id();

然后,您可以保存$ id并将其与数据库中的任何内容相关联。

另外,只需在几微秒内保存非常准确的时间戳

$id = microtime();

或者在每个用户的数据库中创建一行并使用该行的主键。


4
投票

所有答案都可以简单地纳入。但是,您可能没有想过的是当多个用户共享IP时会发生什么。例如,Google的所有员工或AOL或Juno的所有用户都可以在所有这些用户中使用100 ips。如果他们每10到25天提供一次新的IP,该怎么办?

数据背后的想法是有意义的。您的数据将如何有意义?知识产权可能是一名来自纽约州北部的12岁孩子,另一名来自新泽西州哈肯萨克的40岁女性。除了使代码复杂化之外,实现这样一个系统有什么用呢?

我的建议:重新审视您的要求。你到底想要完成什么?实现一个简单的cookie来跟踪唯一访问者可能会更好。它仍然不会100%准确(那么从网吧访问所有人使用同一台计算机付费的人呢?)。但它会使代码更简单,不必添加所有额外参数的每个url。

简而言之,确保每位访问者拥有唯一ID的唯一方法就是要求他们登录。当然,他们可能会使用不同的电子邮件地址设置多个帐户,但至少可以保证没有两个单独的人会获得相同的ID。


2
投票

如果你可能会在几百万(或100M,谁知道)之后得到重复 - 那么最简单的方法是使用uniqid('', true)

如果不是 - 那么在数据库中创建一些序列并为每个新用户递增它。


2
投票

如何创造像这样非常独特的东西。

$ip = $_SERVER['REMOTE_ADDR'];
$m_time = mircotime();

$unique_id = md5($ip . $m_time . rand(0, time()));

希望这有帮助,谢谢


0
投票

我的2美分是使用SQL表对:[id,ip]。 确保您对数据库的访问是“原子的”。 也就是说,没有人可以介入您对数据库的读取和可选写入。 为more reading 如果存在,get(ip)将返回id 或者将生成一个新条目并返回新的id(简单+1方法)。

我可以想到上面的许多变化。 底线:使用简单的增量方法简单的sql表。


0
投票

此代码基于device nameIP address以及device language生成唯一ID:

  <?php
    preg_match('/\((.*?)\)/', $_SERVER['HTTP_USER_AGENT'], $matches, PREG_OFFSET_CAPTURE);
    $device_name = $matches[0][0];
    $unique_id=md5($device_name.$_SERVER['REMOTE_ADDR'].$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
    echo $unique_id;
  ?>
© www.soinside.com 2019 - 2024. All rights reserved.