1

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

我已经尝试过 Internet 协议 (IP),但当访问者在 NAT 或代理下时它不会工作。

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

顺便说一句,我正在使用 PHP。

4

3 回答 3

2

您应该使用 cookie、ip 和会话的组合。

于 2012-04-15T04:51:46.707 回答
2

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

我会推荐:

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

当用户清除他们的浏览历史记录/cookies并且现在无法检索该用户的活动时,就会出现问题,因为它完全基于该哈希。

我想一种解决方法是向用户发送一封带有哈希值的电子邮件,并指导他们如何重新初始化他们的活动历史记录。

您必须创建一个特殊页面,他们可以在其中输入他们的哈希值,您的系统将重置他们系统上的 cookie。

于 2012-04-15T05:11:13.297 回答
1
do { 
$uniqueID = uniqid(); 
$exists = mysql_num_rows('SELECT * FROM table WHERE id = $uniqueID');
} while ($exists == 1)

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

于 2012-04-15T04:50:44.133 回答