修改我的网站以允许匿名评论

时间:2009-03-12 05:13:04

标签: mysql database database-design identity user-accounts

我为自己的网站编写代码作为教育/有趣的练习。现在网站的一部分是一个博客(就像其他所有网站一样: - /)支持通常的基本博客功能,包括评论帖子。但我只为登录用户启用了评论;我想改变代码以允许匿名评论 - 也就是说,我希望允许人们在不首先在我的网站上创建用户帐户的情况下发表评论,尽管仍然会有某种身份验证来防止垃圾邮件。

问题:我应该为匿名评论保存哪些信息?我至少在考虑显示名称和电子邮件地址(用于显示Gravatar),可能还有网站URL,因为我最终也想接受OpenID,但其他任何事情都有意义吗?

其他问题:我应该如何修改数据库来存储这些信息?我对评论表的模式目前是

comment_id       smallint(5)       // The unique comment ID
post_id          smallint(5)       // The ID of the post the comment was made on
user_id          smallint(5)       // The ID of the user account who made the comment
comment_subject  varchar(128)
comment_date     timestamp
comment_text     text

我应该在评论表中添加名称,电子邮件地址等其他字段吗? (似乎是一个坏主意)创建一个新的“匿名用户”表? (如果是这样,如何防止匿名用户ID与常规用户ID冲突)或者在现有用户表中为匿名用户创建虚假用户帐户?

使这一点变得棘手的一部分原因是,如果有人试图使用已经与我网站上的帐户相关联的电子邮件地址(或OpenID)发布匿名评论,我想抓住它并提示他们登录

2 个答案:

答案 0 :(得分:4)

匿名评论的重点是用户无需登录,对吧?

我的个人品味是不强迫用户输入任何东西,甚至不是他们的名字!唯一需要的字段是评论文本本身。如果他们不想透露姓名或电子邮件,那很好,谁在乎呢?

如果他们提供的电子邮件已经存在,那么他们很可能会在很久以前注册,甚至不记得他们的密码。

同样,在这种情况下,请勿强制用户登录。只需让他们选择登录或将电子邮件字段留空(或更改其内容)。或者,只需显示一个警告框,告诉他们评论将在没有电子邮件地址的情况下发送,并带有“确定”和“取消”选项。

那么,用匿名评论存储什么?

我会说存储他们的姓名和电子邮件(当然,不要向公众显示他们的电子邮件),但要将它们作为可选字段,而不是强制性的。

你也可以存储他们的网站,虽然我个人不知道这是什么意思,除了可能是匿名海报的自我宣传!

答案 1 :(得分:1)

毫无疑问,您在评论表中输入“用户名”。然后将用户表中的值复制到登录用户的该字段。这样,如果用户被删除,他们的评论仍然附有一个名称。注释通常是分层的,因此很难在注释树的中间删除注释。

如果将它留空,则在表格中输入“anonymous_user”文本。