【发布时间】:2016-06-10 08:56:12
【问题描述】:
我有一个表temp_views,它根据帖子的 ID、用户的 IP 和他们的用户代理字符串存储临时视图(一个小时)。
SELECT COUNT(*) as viewed
FROM temp_views
WHERE showcase_id=:showcase_id AND ip=:ip AND user_agent=:user_agent
IP 和用户代理都以简单的TEXT 形式存储在表中。 (我应该换一种方式吗?)。
如果 viewed 为 0,则添加视图 - 否则不执行任何操作。
我想知道的是,这完全可以“玩弄”吗?如果 IP 匹配但用户代理不匹配,那么它将添加一个视图。用户代理可以很容易被欺骗吗? (当用户向下滚动页面时,将使用 Ajax 异步添加视图)。
此外,这是缓慢/低效还是可以?
【问题讨论】:
-
Opera 浏览器和/或 Safari 浏览器(我忘了哪个)可以选择查看提供其他用户代理标签的内容,也有各种用于 Firefox 的插件可以做同样的事情,您可以在其中选择什么您发送到与之交互的服务器的用户代理字符串的排序。更难区分的是您的用户群中有多少百分比可能正在使用这些功能?这决定了是否值得花时间关心它......
-
一般应该使用
VARCHAR而不是TEXT,除非尺寸很大。 -
@Barmar 我指定
VARCHAR的长度是多少? -
您希望允许的最大尺寸。
-
如果我将
VARCHAR设置为 10 并且 IP 大于 10 个字符,那怎么办?我只使用TEXT,因为 60k+ 个字符或任何它可能是安全的。