mysql - 我应该让数据库字段保存多长时间来保存用户代理字符串?

标签 mysql user-agent

我正在定制一个登录系统,出于安全原因,我被要求记录所有身份验证请求。

我计划做的一件事是记录传入的用户代理字符串,并在请求时将它们翻译成显示,例如 Request from: (Chrome/Windows)Request from: (Firefox/苹果机)

我的 varchar 字段在 MySQL 中的长度应该是多少?

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

最佳答案

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

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

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

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

总而言之,您的 3 个选择是:

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

关于mysql - 我应该让数据库字段保存多长时间来保存用户代理字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39554421/

相关文章:

css - 我如何覆盖用户代理——使用来自 angularjs 的按钮

加载网站的移动应用程序的 ASP.net 用户代理检测

html - 确定用户的时区

eclipse - 更改 Eclipse 3.5 中的用户代理以安装新软件

mysql - 将 XLS 数据导入 MySQL 表,保留第一列作为 PK

php - 在 WordPress 的表中显示数据库数据

mysql - 从 MySQL 查询结果中计算子查询数量

mysql - SQL 查询建议(用连接替换存在)

perl - 如何在 Perl 中解析用户代理字符串?

mysql - 从一个表中选择多行,而另一表的计数为