タイトルが示すように、ユーザーが PHP を使用して Mac で Chrome を使用して私のページにアクセスしているかどうかを検出する信頼できる方法はありますか?
Mac で Chrome を使用している場合にのみ表示されるバグがあり、それが解決されるまで、ユーザーに別のブラウザーを使用するように勧めるポップアップが必要です。
タイトルが示すように、ユーザーが PHP を使用して Mac で Chrome を使用して私のページにアクセスしているかどうかを検出する信頼できる方法はありますか?
Mac で Chrome を使用している場合にのみ表示されるバグがあり、それが解決されるまで、ユーザーに別のブラウザーを使用するように勧めるポップアップが必要です。
$_SERVER['HTTP_USER_AGENT'] を使用して、ユーザーのユーザー エージェントと、これが文字列内にあるかどうかを確認する関数を見つけます。
//The following will find out whether the user is using a Mac, obviously you can change this by echoing the user agent to find out what you need to search for.
$browser = strpos($_SERVER['HTTP_USER_AGENT'], "Chrome");
$os = strpos($_SERVER['HTTP_USER_AGENT'], "Macintosh; Intel Mac OS X");
if($browser !== false && $os !== false) {
//do stuff if on a mac with Chrome
}
これは、あらゆるタイプの Mac OS X ソフトウェアとあらゆるバージョンの Chrome で動作します。結果をさらに絞り込みたい場合は、次を使用できます。
if($_SERVER['HTTP_USER_AGENT'] == "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11" ) {
//do stuff here
}
ブラウザを見つけるための PHP ソリューションを探していることは承知していますが、特定のブラウザで発生する可能性が最も高い問題はクライアント側であるため、サーバー側から検出する必要はありません。
したがって、ここにJavaScriptを使用した解決策があります。期待どおりの結果が得られた場合は、本文を非表示にしたり、ポップアップを表示したり、サーバーに送信したり、Cookieを設定したり、問題を「修正」するために適切と思われるものを何でもできます(ただし、問題を実際に修正することを検討する必要があります...)
ソースはこちらをご覧ください:
function that_is_called_on_load() {
if (BrowserDetect.browser == "Chrome" && BrowserDetect.OS == "Mac") {
alert("You are using mac, sorry.");
window.location = "mac_chrome.php";
}
}
これは非常に「汚い」ソリューションであり、サーバー側のソリューションよりもわずかに正確で信頼性が高い可能性があります。
ハック修正を作成するよりも、問題が発生しているコードを投稿した方がよいでしょう。
ただし、$_SERVER['HTTP_USER_AGENT']
ユーザーのブラウザー/OS を確認するために使用できます。
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.57 Safari/536.11
支援するために、 Chrome の Mac ユーザーからのようなものを期待します。
ノート
ユーザー エージェントは常に設定されているとは限らないisset
ため、通知が表示されないように最初に使用してください。