コードは次のとおりです:
$user_agent = $_SERVER['HTTP_USER_AGENT'];
if (strpos($user_agent, 'MicroMessenger') === false) {
// WeChat以外のブラウザは閲覧禁止です
echo "HTTP/1.1 401 Unauthorized";
} 他 {
// WeChat ブラウザ、アクセスを許可します
「MicroMessenger」をエコー;
// バージョン番号を取得します
preg_match('/.*?(MicroMessenger/([0-9.]+))s*/', $user_agent, $matches);
エコー
バージョン: '.$matches[2];
}
そうですね、直接反論することはできませんが、これは確かに非常に信頼性が低いです、
データについて話しましょう。
Android、WinPhone、iPhoneのHTTP_USER_AGENT情報は以下の通りです。
コードは次のとおりです:
"HTTP_USER_AGENT": "Mozilla/5.0 (Linux; U; Android 4.1; zh-cn; Galaxy Nexus Build/Wind-Galaxy Nexus-V1.2) AppleWebKit/534.30 (Gecko のような KHTML) バージョン/4.0 Mobile Safari/534.30マイクロメッセンジャー/5.0.1.352"、
"HTTP_USER_AGENT": "Mozilla/5.0 (互換性; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 920T)",
"HTTP_USER_AGENT": "Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B329 MicroMessenger/5.0.1",
WinPhoneにはMicroMessengerが全く無いので判定が出来ないのが分かりますが、実はuserAgentの判定がかなり偽物なので、WeixinJSBridgeの有無をjsで判定してからajaxでphpにすれば良いのではないかと思います
。PHP は実際のページ情報を検出して返し、その過程で「Loading...」を追加します。これは非常に調和的です。もちろん、ajax も騙すことができますが、userAgent の騙しと比較すると、少し面倒です。
しかし、私たちの目的はそれがWeChatであるかどうかを検出することであり、欺瞞の問題ではありません。私はある種の使用主義と無制限のコピーアンドペーストが嫌いで、コードの一部がフィルタリングされる場合があるため、具体的なコードは書きません。関係ありません