如何为没有用户名的用户创建唯一 ID - PHP

Posted

技术标签:

【中文标题】如何为没有用户名的用户创建唯一 ID - PHP【英文标题】:How to create an unique id for users without username - PHP 【发布时间】:2012-04-26 22:12:12 【问题描述】:

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

我已经尝试过 Internet 协议 (IP),但当访问者处于 NAT 或代理下时它就不起作用了。

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

顺便说一句,我使用的是 php

【问题讨论】:

您的网络服务器是否分配了跟踪 cookie?使用该 cookie 的值作为占位符用户名。例如Apache 的 mod_usertrack? 【参考方案1】:

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

我会推荐:

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

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

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

更好的是,使用 Unix 时间戳并在末尾添加一个随机数。除非成千上万的人同时加入,否则永远不会有重复。【参考方案3】:
do  
$uniqueID = uniqid(); 
$exists = mysql_num_rows('SELECT * FROM table WHERE id = $uniqueID');
 while ($exists == 1)

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

【讨论】:

您需要在查询字符串周围加上双引号才能使其正常工作。因为它是变量 $uniqueID 不会被扩展。

以上是关于如何为没有用户名的用户创建唯一 ID - PHP的主要内容,如果未能解决你的问题,请参考以下文章

如何为 pandas 数据框中的不同组分配唯一 ID?

如何为没有附加外部通信方法的帐户创建密码重设系统?

Firebase:如何为键生成唯一的数字 ID?

如何为用户 id 等于 DynamoDB 表名的 DynamoDB 创建策略?

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

如何为 Spark RDD 中的元素分配唯一的连续编号