我想用@username来实现用户提及,就像在Twitter中一样。但是,在我的应用程序中,用户名可能会改变。我的方法是在将帖子保存到数据库之前对其进行解析,并将所有@username转换为@userId。你觉得这个怎么样?有谁有更好的选择吗?
发布于 2011-09-23 03:33:12
按原样存储原始文本,并使用uid和用户名创建相关记录的表。
示例模式:
post表
id
textuser_mention表
id
post_id
user_id_mentioned
user_name_mentioned保存帖子后,您的代码应该遍历并创建所有user_mention记录。您可以遍历提及表以发送电子邮件或其他任何您想要做的事情。
如果用户更改了用户名,您现在可以选择用新的用户名更新帖子,或者让旧的用户名链接到正确的用户。
我的规则是,在保存到数据库之前,永远不要修改原始的非结构化文本(但一定要检查它,以避免注入和诸如此类的事情),并且只在输出时修改数据。这意味着你总是让用户输入数据,你永远不知道什么时候会有价值。
也许有一天你会对谁在被提及n次后改变了他们的用户名感兴趣?或者其他一些由于修改了非结构化数据而无法获取的报告。你永远不知道什么时候需要原始数据,在这种情况下,你会得到额外的好处,让你的文本更容易处理。
发布于 2011-09-23 03:15:46
是的,我认为在post时检查用户名列表,并在内部将其转换为用户ID是有意义的。然后,无论何时显示帖子,都要将用户ID转换回当前用户名。
请注意,对于非动态内容,例如发送的电子邮件等,这将更加困难。
此外,我会确保用户名的显示方式清楚地表明它们不是OP发布的文字,否则,这将为用户提供一种将文本插入到其他人的帖子中的方法。
https://stackoverflow.com/questions/7520035
复制相似问题