0

我希望我网站上的用户能够随时更改他们的用户名,并且他们可以使用电子邮件或密码登录。

由于 Facebook 中的类似要求,我仍然必须定义 id。Facebook 会在用户注册时为其分配一个唯一编号,并以多种方式使用该编号。

我们至少需要一些不会改变且不是由用户创建的东西;因此,在必要时,可以通过该号码识别用户。

Facebook 不会将这些数字加 1。就像数据库中的自动增量 int 值一样。这很好,因为您无法立即估计用户数量,也无法通过一一增加用户标识来浏览系统。

处理这种情况的最佳方法是什么?Facebook 如何做到这一点?

有没有通用的算法或技术来做到这一点?

4

2 回答 2

2

您应该将您的 id 生成为自动递增的数字。然后,您可以对该数字应用可逆转换,使其看起来像是随机生成的。整数 ID 混淆技术的公认答案是使用Pearson 散列的一个很好的例子。

这样做的结果可能是输入一个令人不安的大数字。例如,用户 id 13 可能会转换为 4795368201。如果这对您的用户来说是个问题,您可以使用 base64 或类似的东西对结果进行编码。

于 2013-08-27T20:02:18.713 回答
1

嗯,这很简单,只使用带有 num 值的 php rand(),并循环检查数据库是否包含生成的 ID,如果它是真的,那么由于循环它会生成一个新的 ID 等等,如果它是错误的,请注册你的用户使用此 ID。

Facebook 为其网站上的每个项目使用一个唯一 ID,这意味着用户可以拥有一个 ID,但如果您使用该 ID 并添加 +1,您可能会得到一张照片或帖子......

于 2013-08-27T10:09:04.473 回答