次のような質問があります。
WeChat 上でページを開くことができますが、PC 上で直接開くことはできません。
例として、php はページが WeChat によって開かれたかどうかを判断します。
-
- $user_agent = $_SERVER['HTTP_USER_AGENT'];
- if (strpos($user_agent, 'MicroMessenger') === false) {
- // WeChat 以外のブラウザは禁止されていますブラウジング
- echo "HTTP/1.1 401 Unauthorized";
- } else {
- // WeChat ブラウザ、アクセスを許可
- echo "MicroMessenger";
- // バージョン番号を取得
- preg_match('/.*?(MicroMessenger/([0 -9 .]+))s*/', $user_agent, $matches);
- echo '
Version:'.$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 MicroMessenger/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 (Mac OS と同様))
WinPhone には MicroMessenger が全くないので判定できないことが分かりますが、実は userAgent の判定がかなり偽物なので、WeixinJSBridge が存在するかどうかを js で判定してから ajax で php にすればいいと思います。
PHP はそれを検出し、処理中に「Loading...」を追加して実際のページ情報を返します。これは非常に調和的です。もちろん、ajax も騙すことができますが、userAgent の騙しと比較すると、少し面倒です。
ただし、私たちの目的は、それが WeChat 側であるかどうかを検出することであり、だますことではありません。借用や無制限のコピーアンドペーストが嫌いなので、コードの一部はフィルタリングされることがあります。 、
|