PHP   发布时间:2022-04-04  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php-用户代理标头-mysql存储的缩写大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

根据这个帖子,特别是这篇文章https://stackoverflow.com/a/6595973/1125465,微软一如既往地炫耀.用户代理的规模可能非常非常大.

我正在使用PHP创建一个小型访问者库,并且我想存储用户代理信息.我无法确定数据类型和长度.

所以我的问题是:关于如何将用户代理缩短到“正常”大小,您有任何想法吗? (例如256个字符).

注意:开发人员使用用户代理来检测用户浏览器和操作系统.因此,根据链接的示例,来自M $的所有愚蠢数字都只是…只是.一如既往,让我们紧张.因此,想法是创建一个缩短用户代理字符串但不丢失重要信息的@L_197_12@.

我认为这样的功能应该:

>不依赖于将来的更新和新的浏览器(没有硬编码的字符串)
>有一个简单的机制来决定要删除内容(例如,如果有数字,逗号,数字,逗号,数字,逗号,数字…,它可以删除它,这并不有趣).
>最后,如果所有操作仍然导致用户代理过长(例如256个字符),则无事可做,因此请切断其余部分.这是百万分之一,因此数据可能会丢失.

附加说明:我知道,我可以创建一个@L_197_12@来从用户代理获取浏览器和OS类型,并仅保存这些值.但由于此类@L_197_12@始终具有硬编码的名称,并且如果无法识别浏览器,则返回“无法识别的浏览器”.因此,将来每个人都必须记住有关更新这些@L_197_12@的信息.如果我们保存了简短的用户代理,则该信息不会丢失(因为只有正在读取数据库的脚本必须具有新的识别系统).但是,数据库中的条目确实是可靠且一致的.

更新:
因为应该有一些代码,并且想法有问题,而现有代码没有问题,所以我将写一些到目前为止我写过的最低限度的代码;):

<?PHP
    function shorten($useragent, $maxsize = 256) {
        $shorten = $useragent;
        ... // ?
        $shorten = substr($shorten, 0, $maxsizE); // the "last hope" cut
        return $shorten;
    }
    echo shorten($_SERVER['http_user_ageNT']);
?>

解决方法:

没有针对User-Agent字符串的规则,因此无法创建完全正确且面向未来的解析器.但是有一个通用的模式:

User-Agent: <ENGIne-String> <ENGIne-String> ...

引擎字符串的形式为:

<agent-name> (<comment>; <comment>; ...)

每个引擎字符串(根据我的理解,我只是称它可能不正确)可能带有注释,也可能没有注释.

例如:

@H_470_22@mozilla/5.0 (iPhone; cpu iPhone OS 6_0 like Mac OS X) ↲
AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10A5376e ↲
Safari/8536.25 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

(这是一个字符串,我只是将其分成几行.)似乎,每当有人使用浏览器引擎的分支时,他们只会将自己的内容附加到末尾.因此,我们有一些抽象的“ Mozilla”浏览器(“第一次浏览器大战”的遗留)认为它在iPhone上.然后,我们看到有一个WebKit(它记得它很早以前就诞生为KHTML).然后是一些Version / 6.0修改,然后被修改为Mobile / 10A5376e,成为Safari / 8536.25,最终揭示了它实际上是移动Google bot的秘密.

一个例子:

@H_470_22@mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.4; ↲
InfoPath.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; ↲
.NET CLR 3.5.30729; .NET CLR 1.1.4322)

这是一个引擎,但是在括号中有很多话要说.

所以一般的观察是:

>最后的引擎字符串最为重要,
>括号中的最后一个注释不太重要.

虑到这一点,我的想法是将字符串解析为这些引擎和注释标记,然后从每个引擎部分中丢弃从第五个开始的注释.然后,如果还不够的话,请从第二个开始丢弃引擎部分(第一个通常是抽象的“ Mozilla”,但通常具有有用的注释;有时实际上也很具体,尤其是对于Web爬虫而言).

解析时,我们需要虑到偶尔可能有一些字符串不遵循此格式.可以将它们保存到日志文件中以供以后检查,然后简单地将其切成所需的长度以适合数据库.

大佬总结

以上是大佬教程为你收集整理的php-用户代理标头-mysql存储的缩写全部内容,希望文章能够帮你解决php-用户代理标头-mysql存储的缩写所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: