我应该在数据库字段中保存用户代理字符串多长时间?

Ala*_*ACK 5 mysql user-agent

我正在自定义登录系统,并且出于安全原因,要求登录所有身份验证请求。

我计划要做的一件事是记录传入的用户代理字符串,并在需要时将其转换为诸如Request from: (Chrome/Windows)或的显示。Request from: (Firefox/Mac)

MySQL中的varchar字段应为多长?

我是否需要整个useragent字符串来将来准确确定客户端的浏览器/操作系统信息?或者是否有一些针对用户代理的规范,该规范允许我从中仅提取一个子字符串,并丢弃其余的“无用信息”。

Bla*_*are 5

简短的回答:即使它是任意大的,一些用户代理仍然会被切断。

更长的答案:除非您计划在 User-Agent 上放置索引(如果仅用于记录/显示目的,我不明白您为什么要这样做),否则没有理由使用 VarChar 而不是足够长的 Text 字段.

或者,您可以寻找一个 User-Agent 解析库,它将字符串转换为更有用的内容,例如“Chrome/Windows”或“Safari/iPhone”,在这种情况下,您可以合理地使用较短的 VarChar 值。

User-Agent 字符串绝对没有规范。它们是完全任意的,尽管许多都遵循一些您不能总是为所有用户代理假设的通用模式。

总之,您的 3 个选项是:

  • 获取一个库来有意义地解析它们
  • 选择一个任意的 varchar 长度并接受一些会被切断
  • 使用文本字段

  • MySQL 中 varchar 的最大长度是 65535 字节,而不是 255。 http://dev.mysql.com/doc/refman/5.7/en/char.html (3认同)
  • 啊,看起来它在 5.0 中发生了变化,从那时起我就一直生活在谎言中:P 更新了措辞,但总体信息是相同的。 (2认同)