PHPでクライアントのロケールを簡単に検出する方法
Locale::acceptFromHttp() を使ったロケールの検出
PHP 5.3.0 以降では、$_SERVER['HTTP_ACCEPT_LANGUAGE'] 変数を解析してロケールを取得するための便利な関数が標準で用意されています。それが Locale::acceptFromHttp() です。
この関数は、Accept-Language HTTP ヘッダーの内容を引数として受け取り、現在のユーザーが使用している言語に基づいたロケールを自動的に判別します。
コード例
$locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo $locale;
実行結果
上記のコードを実行すると、次のような出力が得られます。
en_US
ブラウザごとの Accept-Language ヘッダーの挙動
ほとんどのブラウザは、Accept-Language HTTP ヘッダーを送信する際に、ユーザーのシステム設定に基づいたロケール情報を含めています。たとえば、アメリカ合衆国のユーザーであれば、通常「en-us」が送信されます。古いブラウザの中には、言語コードのみの「en」だけを送るものもあります。
イギリス(UK)のユーザーは、デフォルトのブラウザ設定としてシステムまたはユーザーロケールを英語(UK)に設定していることが多く、この場合 Accept-Language ヘッダーには「en-gb」が含まれます。
同様に、その他の国にも固有の英語ロケールが存在します。例えば、南アフリカ共和国であれば「en-za」といった具合です。
Geo-IP 方式との比較
IPアドレスから地理位置情報を取得して言語やロケールを推測する Geo-IP 方式もありますが、この方法はユーザーが実際に好む言語やロケールと一致しないケースが多く、精度の面で劣ります。その点、Locale::acceptFromHttp() を使えば、ユーザー自身がブラウザに設定した言語設定をそのまま反映できるため、より確実にクライアントのロケールを検出できます。
-
JavaScriptでキー押下を検出する最も簡単な方法
JavaScriptでキー入力(キープレス)を検出する最も簡単な方法は、onkeypressイベントハンドラを使うことです。 document.onkeypress 押されたキーはkeyCodeプロパティと照合されます。このプロパティは、onkeypressイベントを発生させたキーのUnicode文字コードを返します。たとえば、Enterキーであれば「13」という値になります。 コード例 以下は、Enterキーの押下を検出し、それ以外のキーが押された場合にはその文字をコンソールに表示するサンプルコードです。 <!DOCTYPE html> <html lang="
-
PHPで検索エンジンボット(クローラー)を検出する方法を解説
PHPで検索エンジンボットを判別する基本の考え方 Webサイトにアクセスしてくる検索エンジンのスパイダー(クローラー、ボット)を判別したい場合、各検索エンジンが公開しているボット名の一覧リストを参考にするとよいでしょう。 そして、アクセス元のユーザーエージェントを確認するには、$_SERVER[HTTP_USER_AGENT] を使用します。この値にボット名が含まれているかどうかをチェックすることで、アクセスしてきたのがスパイダー(ボット)かどうかを判定できます。 方法1:strstr関数でボット名をチェックする 以下は、ユーザーエージェントに特定のボット名が含まれているかを確認するシンプル