Php 大型网站,用户众多,如何唯一地识别用户

Php 大型网站,用户众多,如何唯一地识别用户,php,database-design,social-networking,Php,Database Design,Social Networking,大多数网站要求用户名是唯一的。我注意到SO允许重复用户名,当你有这样一个非常大的网站时,这可能会很好(我猜他们这样做是为了避免像chris123、chris213、chris321这样的用户名开始让自己看起来很困惑)。但是,允许重复用户名通常是一个相对较差的实现吗?从两个用户名相同的用户那里得到两个答案可能会让人困惑 那么,对于拥有大量需要相互交互的用户的大型网站,还有什么其他选择呢?我想有些东西甚至不是基于用户名的,但不确定是什么。虽然有不同的用户名(通常用于登录)几乎是绝对的要求,只要存在可

大多数网站要求用户名是唯一的。我注意到SO允许重复用户名,当你有这样一个非常大的网站时,这可能会很好(我猜他们这样做是为了避免像chris123、chris213、chris321这样的用户名开始让自己看起来很困惑)。但是,允许重复用户名通常是一个相对较差的实现吗?从两个用户名相同的用户那里得到两个答案可能会让人困惑


那么,对于拥有大量需要相互交互的用户的大型网站,还有什么其他选择呢?我想有些东西甚至不是基于用户名的,但不确定是什么。

虽然有不同的用户名(通常用于登录)几乎是绝对的要求,只要存在可识别的方法来识别使用系统的其他个人的实际用户,就没有理由要求显示别名具有唯一性。这是论坛中相当普遍的做法,因为确实有很多“杰夫·史密斯”。因此,例如,使用用户的信誉和指向其个人资料的链接作为区分实际用户的机制。不过,登录本身必须具有某种形式的唯一性

作为补充,澄清我的评论:


天空(和你的想象力)确实是唯一识别别名的极限。在标准配置文件链接之外,您可以添加其他独特的特性(如果您希望别名相对准确无误)。举个我从未见过的例子:在使用别名时使用独特的字体或颜色。。。蓝色的sanscript Jeff Smith不同于黄色的arial Jeff Smith(只是一个示例方法)

我过去在自己的网站上遇到过这种情况,我发现最好的方法是通过用户的电子邮件地址来识别用户

这是一个非常简单的方法,因为它允许使用多个用户名(或者像Facebook一样的用户名),您可以通过数据库中的用户名识别唯一性,并在网站上显示唯一性,甚至可能显示用户名、头像和位置

例如:

chris123 (AZ) - chris123@example.com
chris123 (WA) - chris123.west@example.com
chris321 (AZ) - chris321@example.com
-->选择用户名并不是什么好主意。 -->也许你可以选择电子邮件id和用户名

--> best is to Generate a unique ID for every user bro.

好吧,你的问题很含糊,我编辑了标题使它更清楚

毫无疑问,如何识别用户。若您查看stackoverflow用户linfo链接,您会注意到旧的良好的自动递增唯一编号。没问题


因此,我想你的问题是一个用户如何识别另一个用户。我认为这没什么大不了的,因为冲突非常罕见,人们总是可以通过用户信誉和ID来判断;授权和个性化

大多数网站将坚持使用电子邮件来唯一地授权某人,因为这些电子邮件已经被保证是唯一的。所以使用开放式身份验证,这意味着我已经很久没有为他们的身份验证指定“用户名”。我有我的电子邮件和密码,并为SO处理授权部分

另一部分是个性化,如果用户愿意的话,应该允许他们选择重复的名字。这需要与身份验证详细信息联系在一起,通常使用站点专门生成的单独唯一编号来完成。然后链接授权用户名和显示用户名。我猜,无论用户存储在什么数据库结构中,它都是主键的一部分

如果您检查每个配置文件名称的链接,您将在url中看到一个数字,这是您在网站上唯一的标识,并将
twitter
与您的电子邮件/用户名联系起来,以便通过数字
629665
登录。您的用户页面链接是


虽然我可以在网站上清楚地看到您选择的显示名称和您的唯一id,但我不知道您的授权身份,您可以将其保密并帮助您保持安全。

我个人认为,对于任何规模的网站,没有唯一的可见名称都是一种不好的做法。有点对您的问题感到困惑!其他选择意味着什么@Shoban我的意思是,一个选择是要求使用唯一的用户名,然后使用chris123、chris132和chris321等等。另一个选项是只允许重复的chris和chris以及chris。在我看来,对于大量用户来说,这两种选择都开始变得棘手起来。在大型网站上,人们还可以使用其他选项进行此类识别,可能根本不是基于用户名的,也可能是用户名和其他东西的组合。我甚至不知道我知道什么。可能有人已经找到了一个好的替代方案。+1但是登录时需要唯一性,唯一性的好处是我在问题中提出的,所以问题是:除了chris123、chris321、chris231之外,我还需要什么替代方案来唯一地识别用户?这看起来不是很好,让用户识别自己,但添加其他独特的数据集(独特/随机的化身、信誉点、个人资料链接、/.style用户ID)是最常见的。我修改了我的答案,提供了一个示例。。。在这篇评论中超过了5分钟,我相信这会更好地反映出来。对于底层投票者,请提供评论。+1但我怀疑电子邮件是个好主意,因为我可以使用chris123,添加gmail.com、yahoo.com等和垃圾邮件。真的没有什么简单的方法可以防止这种情况,就像在其他网站上一样。我可以在任何网站上创建我自己和垃圾邮件的多个实例,包括SO(但我不会)。降低垃圾邮件数量的唯一方法是使用短信激活服务,只允许连接一封电子邮件和一个电话号码。回到话题上来,看看XBOX live,他们有独特的玩家标签。在我看来,也许最好还是坚持做一些经过实践证明是正确的事情。