如何为每位新访客创建唯一ID?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何为每位新访客创建唯一ID?相关的知识,希望对你有一定的参考价值。
我的问题是如何为访问我网站的每个唯一访问者创建一个唯一的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,依此类推。谢谢。
最简单的事情可能就是使用session_start和session_id。
session_start();
$id = session_id();
然后,您可以保存$ id并将其与数据库中的任何内容相关联。
另外,只需在几微秒内保存非常准确的时间戳
$id = microtime();
或者在每个用户的数据库中创建一行并使用该行的主键。
所有答案都可以简单地纳入。但是,您可能没有想过的是当多个用户共享IP时会发生什么。例如,Google的所有员工或AOL或Juno的所有用户都可以在所有这些用户中使用100 ips。如果他们每10到25天提供一次新的IP,该怎么办?
数据背后的想法是有意义的。您的数据将如何有意义?知识产权可能是一名来自纽约州北部的12岁孩子,另一名来自新泽西州哈肯萨克的40岁女性。除了使代码复杂化之外,实现这样一个系统有什么用呢?
我的建议:重新审视您的要求。你到底想要完成什么?实现一个简单的cookie来跟踪唯一访问者可能会更好。它仍然不会100%准确(那么从网吧访问所有人使用同一台计算机付费的人呢?)。但它会使代码更简单,不必添加所有额外参数的每个url。
简而言之,确保每位访问者拥有唯一ID的唯一方法就是要求他们登录。当然,他们可能会使用不同的电子邮件地址设置多个帐户,但至少可以保证没有两个单独的人会获得相同的ID。
如果你可能会在几百万(或100M,谁知道)之后得到重复 - 那么最简单的方法是使用uniqid('', true)
如果不是 - 那么在数据库中创建一些序列并为每个新用户递增它。
如何创造像这样非常独特的东西。
$ip = $_SERVER['REMOTE_ADDR'];
$m_time = mircotime();
$unique_id = md5($ip . $m_time . rand(0, time()));
希望这有帮助,谢谢
我的2美分是使用SQL表对:[id,ip]。 确保您对数据库的访问是“原子的”。 也就是说,没有人可以介入您对数据库的读取和可选写入。 为more reading 如果存在,get(ip)将返回id 或者将生成一个新条目并返回新的id(简单+1方法)。
我可以想到上面的许多变化。 底线:使用简单的增量方法简单的sql表。
此代码基于device name
和IP 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;
?>
以上是关于如何为每位新访客创建唯一ID?的主要内容,如果未能解决你的问题,请参考以下文章