PHP ページを要求しているユーザー エージェントを確認するための信頼できる方法を探しています。私も知ってget_browser
います$_SERVER['HTTP_USER_AGENT']
が、どちらも信頼できるようには見えません。
ではget_browser
、ユーザー エージェントを定義する ini ファイルに設定された browscap PHP ディレクティブが必要です。PHP はhttp://browsers.garykeith.com/downloads.aspを推奨しているので、LAMP 用に指定された「完全な」ものをインストールしました。
通常のブラウザの組み合わせでうまく機能get_browser
しますが、私は特にMS Officeからのリクエストを扱っています. その場合、OS X Excel の場合と同様に、何も返さないようです (注:$_SERVER['HTTP_USER_AGENT']
は最初の行で、その後に の配列出力が続きますget_browser
):
Mozilla/5.0 (Macintosh; Intel Mac OS X) Excel/14.0.0
Array
(
[browser_name_regex] = ^.*$
[browser_name_pattern] = *
[browser] = Default Browser
[version] = 0
[majorver] = 0
[minorver] = 0
[platform] = unknown
[alpha] =
[beta] =
[win16] =
[win32] =
[win64] =
[frames] =
[iframes] =
[tables] =
[cookies] =
[backgroundsounds] =
[javascript] =
[vbscript] =
[javaapplets] =
[activexcontrols] =
[isbanned] =
[ismobiledevice] =
[issyndicationreader] =
[crawler] =
[cssversion] = 0
[aolversion] = 0
)
さらに悪いことに、一部の Windows ケースでは Office について言及していないようです。
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Array
(
[browser_name_regex] = ^mozilla/4\.0 (compatible; msie 7\.0.*; .*windows nt 6\.1.*).*$
[browser_name_pattern] = Mozilla/4.0 (compatible; MSIE 7.0*; *Windows NT 6.1*)*
[parent] = IE 7.0
[platform] = Win7
[browser] = IE
[version] = 7.0
[majorver] = 7
[win32] = 1
[frames] = 1
[iframes] = 1
[tables] = 1
[cookies] = 1
[backgroundsounds] = 1
[javascript] = 1
[vbscript] = 1
[javaapplets] = 1
[activexcontrols] = 1
[cssversion] = 2
[minorver] = 0
[alpha] =
[beta] =
[win16] =
[win64] =
[isbanned] =
[ismobiledevice] =
[issyndicationreader] =
[crawler] =
[aolversion] = 0
)
これらの例から判断すると、ここでは実際には信頼性が低く、少なくとも Office 要求の大量の .NET 参照を吐き出すget_browser
より多くの情報を収集できるようです。$_SERVER['HTTP_USER_AGENT']
それを念頭に置いて、誰かが壊れるよく書かれた関数を私に指摘でき$_SERVER['HTTP_USER_AGENT']
ますか? 私が実行したすべての検索では、代わりに使用する推奨事項が表示されますget_browser
。
get_browser
Windows ベースのインストールから MS Office の参照がまったく失敗するように見える理由についての考えも大歓迎です...さまざまな Office アプリのリンクをクリックするさまざまなユーザーの 10 のテストを次に示します ($_SERVER
最初にget_browser
結果): http://pastebin.com/ 5m2zWMrt - OS X からの最初の 3 つの例の後にオフィスの兆候がないことに注意してください。MSDN で関連する質問もしました: http://social.msdn.microsoft.com/Forums/en-US/officegeneral/thread /8ad594cd-0dfe-4110-8ffc-4d0caee4c29f
要約すると$_SERVER['HTTP_USER_AGENT']
、理想的には、要求が MS Office から来ているかどうかを判断できる . 長期的にはget_browser
、Office データを含む最新の ini があるにもかかわらず、MS Office で動作しない理由を突き止める必要があります。