【发布时间】:2013-07-17 20:46:52
【问题描述】:
用户可以将文章添加到我的网站,当有人点击文章时,他们会得到如下链接:
www.example.com/article/cars
“汽车”是文章的标题。
然后我用查询从数据库中读取文章内容:
SELECT * FROM Article WHERE Title = 'Cars'
但其他用户也可以添加标题为“汽车”的文章。然后就出错了...因为关于“汽车”的第二篇文章也会得到链接:www.example.com/article/cars 然后查询将返回 2 篇文章,而我只想在该页面上显示一篇文章数据。
所以我需要用这样的方式解决这个问题:
SELECT * FROM Article WHERE Title = 'Cars' AND Id = '1';
对于另一个:
SELECT * FROM Article WHERE Title = 'Cars' AND Id = '2';
但我不希望有这样的链接来阅读带有标题和 ID 的文章(我希望它隐藏,而不是在 URL 中):
www.example.com/article/cars/1
www.example.com/article/cars/2
你们知道有什么方法可以解决这个问题吗?允许用户添加同名文章,但是当有人点击链接时,从数据库中读取的内容必须是正确的文章,而不是在 URL 中显示文章 ID。
【问题讨论】:
-
...then the query will return 2 articles, while I only want to show one article-data on that page当您希望链接返回一项且仅一项时,非唯一值不是链接的好选择。 -
您是否允许匿名访问您的网站,或者用户是否始终登录,并且文章应始终为已登录用户提供?
-
如果链接完全相同,数据库应该如何知道用户请求的是哪篇文章?魔法?必须有一些差异化。