2

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

问题:我应该为匿名评论保存哪些信息?我在想至少显示名称和电子邮件地址(用于显示 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)发表匿名评论,我想抓住它并提示他们登录。

4

2 回答 2

4

匿名评论的全部意义在于用户不必登录,对吗?

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

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

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

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

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

您也可以存储他们的网站,虽然我个人不知道这样做有什么意义,除了可能为匿名海报做自我广告!

于 2009-03-12T05:24:16.350 回答
1

没问题,你在评论表上输入“用户名”。然后将用户表中的值复制到登录用户的该字段。这样,如果用户被删除,他们的评论仍然会附加一个名称。评论通常是分层的,因此很难只删除评论树中间的一个。

如果他们将其留空,您可以在表格中输入您的“anonymous_user”文本。

于 2009-03-12T06:27:43.983 回答