4

私はこれを検索しました、そして私が見つけるすべては私が必要とするよりはるかに多いです。私は以前にJavaScriptでこれを行ったことがありますが、PHPを使用することを強く望んでいます。訪問者が使用しているブラウザに応じて、訪問者にメッセージを表示するにはどうすればよいですか?

例:

IEユーザーには、「InternetExplorerを使用しています」と表示されます。

Firefoxユーザーには「MozillaFirefoxを使用しています」と表示されます。

IE、Firefox、Chrome、Safari、Opera以外に他の主要なブラウザがあるかどうかは正確にはわかりません。しかし、少なくとも、これらのブラウザのそれぞれに個別にメッセージを送信したいと思います。ありがとうございました。

4

5 に答える 5

6

ユーザーのブラウザサーバー側を識別するには、$_SERVER['HTTP_USER_AGENT']変数を解析する必要があります...


...または、おそらくより良いget_browser関数を使用します-php.iniで何かを構成する必要があることに注意してください。そうしないと、この種の警告が表示されます。

Warning: get_browser() [function.get-browser]: browscap ini directive not set

PHPのマニュアルページのように:

注:これを機能させるには、php.iniのbrowscap構成設定が、システム上のbrowscap.iniファイルの正しい場所を指している必要があります。browscap.iniはPHPにバンドルされていませんが、最新の» php_browscap.ini ファイルがここにあります。

browscap.iniには多くのブラウザに関する情報が含まれていますが、データベースを最新の状態に保つためにユーザーの更新に依存しています。ファイルの形式はかなり自明です。


そのファイルをダウンロードし、この行をphp.iniに追加した後:

browscap = /home/squale/developpement/tests/temp/php_browscap.ini

コードの次の部分:

var_dump(get_browser(null, true));

私に与える:

array
  'browser_name_regex' => string '^mozilla/5\.0 (x11; .*linux.*; .*rv:1\.9.*) gecko/.*$' (length=53)
  'browser_name_pattern' => string 'Mozilla/5.0 (X11; *Linux*; *rv:1.9*) Gecko/*' (length=44)
  'parent' => string 'Mozilla 1.9' (length=11)
  'platform' => string 'Linux' (length=5)
  'browser' => string 'Mozilla' (length=7)
  'version' => string '1.9' (length=3)
  'majorver' => string '1' (length=1)
  'minorver' => string '9' (length=1)
  'alpha' => string '1' (length=1)
  'frames' => string '1' (length=1)
  'iframes' => string '1' (length=1)
  'tables' => string '1' (length=1)
  'cookies' => string '1' (length=1)
  'javaapplets' => string '1' (length=1)
  'javascript' => string '1' (length=1)
  'cssversion' => string '2' (length=1)
  'supportscss' => string '1' (length=1)
  'beta' => string '' (length=0)
  'win16' => string '' (length=0)
  'win32' => string '' (length=0)
  'win64' => string '' (length=0)
  'backgroundsounds' => string '' (length=0)
  'cdf' => string '' (length=0)
  'vbscript' => string '' (length=0)
  'activexcontrols' => string '' (length=0)
  'isbanned' => string '' (length=0)
  'ismobiledevice' => string '' (length=0)
  'issyndicationreader' => string '' (length=0)
  'crawler' => string '' (length=0)
  'aol' => string '' (length=0)
  'aolversion' => string '0' (length=1)

Firefox3.5で; と :

array
  'browser_name_regex' => string '^.*$' (length=4)
  'browser_name_pattern' => string '*' (length=1)
  'browser' => string 'Default Browser' (length=15)
  'version' => string '0' (length=1)
  'majorver' => string '0' (length=1)
  'minorver' => string '0' (length=1)
  'platform' => string 'unknown' (length=7)
  'alpha' => string '' (length=0)
  ....
  'aol' => string '' (length=0)
  'aolversion' => string '0' (length=1)

Linux用のグーグルクロームの最近のバージョン(4.0.203.2)では-まあ、それはある種のナイトリービルドであることを考えると、それが認識されないのは正常だと思います...

参考までに、これがユーザーエージェント文字列です。

string 'Mozilla/5.0 (X11; U; Linux x86_64; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/4.0.203.2 Safari/532.0' (length=109)


このショーはget_nice browser is; しかし、最先端のテストブラウザには完璧ではないかもしれません。それでも、ほとんどの「一般的な」ブラウザでは問題なく動作するはずです。

于 2009-09-03T09:15:58.297 に答える
2

ほとんどのクライアントはユーザーエージェント文字列を送信し、 get_browserを使用して、その文字列をより「有益な」ものに「変換」できます。
ただし、クライアントは、インターネットエクスプローラーとして自分自身を識別するオペラブラウザなど、必要な文字列を自由に送信できます。

于 2009-09-03T09:15:36.817 に答える
0

PHP でブラウザを検出する唯一の方法は、HTTP_USER_AGENT からのユーザー エージェントからだと思います。

または PHP 関数 get_browser() を使用 -> http://us3.php.net/function.get-browser

于 2009-09-03T09:21:46.270 に答える
0
<?php
  $browser = get_browser();
  echo ''.$browser['browser']; を使用しています。
?>

詳細はhttp://www.php.net/function.get-browserをご覧ください

ここで browscap.ini ファイルを取得できますhttp://browsers.garykeith.com/downloads.asp

于 2009-09-03T09:22:11.370 に答える
0

ブラウザーのバージョンに関係なく、各ユーザーがブラウザーの設定を操作してさまざまな機能を取得できるため (たとえば、Java を無効にする)、ブラウザーの機能をサーバー側で判断する良い方法は実際にはありません。

サーバー側と組み合わせたクライアント側に頼る必要があります。たとえば、リンクテキストなど、これを行うことができる多くのjscriptライブラリがあります

于 2010-02-13T13:16:56.920 に答える