2012-04-15 76 views
1

通常,当我开发与客户端交互的网站时,我曾经使用他们的用户名或用户ID来保存他们的配置等等。但现在我正在开发一个没有登录系统的网站,我需要保存一些东西,比如“喜欢”,“访问页面”等等。如何为没有用户名的用户创建一个唯一的ID - PHP

我试过互联网协议(IP),但当访客在NAT或代理服务器下时,它不会工作。

如何为每个用户创建一个唯一的ID并将它们保存在我的数据库中?

顺便说一下,我使用PHP。

+1

您的网络服务器是否分配了一个跟踪cookie?使用该cookie的值作为占位符用户名。例如Apache的mod_usertrack? – 2012-04-15 04:48:14

回答

2

如果您试图长期保存用户数据,这听起来像是一场灾难。

我会建议:

  1. 创建一个随机的,但唯一的哈希并保存到数据库中。
  2. 将散列设置为用户计算机上的cookie。
  3. 保存所有'喜欢','访问过的页面'等。到键入散列的数据库。

问题出现在用户清除其浏览历史记录/ Cookie后,现在无法检索该用户的活动,因为它都基于该散列。

我想一个解决方法是发送一封电子邮件给用户使用他们的散列并告诉他们如何重新初始化他们的活动历史。

你将不得不创建一个特殊页面,他们可以输入他们的散列,你的系统会重置他们的系统上的cookie。

1
do { 
$uniqueID = uniqid(); 
$exists = mysql_num_rows('SELECT * FROM table WHERE id = $uniqueID'); 
} while ($exists == 1) 

我正在使用类似的代码来生成唯一的ID,它对我来说工作正常。或者,为了使它更简单,你可以使用uniqid()函数,它不应该真的产生两个相同的结果。

+1

您需要在查询字符串周围使用双引号才能使其工作。因为它是变量$ uniqueID不会被扩展。 – vascowhite 2012-04-15 06:33:40

2

您应该使用Cookie,IP和会话组合。

+0

更好的是,使用Unix时间戳并在最后添加一个随机数。除非成千上万的人加入,否则永远不会有重复。 – scottcarmich 2012-04-15 07:21:51

相关问题