コードをコピーします コードは次のとおりです:
$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; タッチ; NOKIA; Nokia 920T)",
"HTTP_USER_AGENT": "Mozilla/5.0 (iPhone; Mac OS X のような iPhone OS 6_1_3) AppleWebKit/536.26 (Gecko のような) 「、
」
WinPhone には MicroMessenger がまったくないので判断が不可能であることがわかりますが、実際のところ、userAgent の判断は非常に偽物なので、WeixinJSBridge が存在するかどうかを js を使用して判断し、その後 ajax を使用して php に実行する必要があると思います。 php はそれを検出し、実際のページ情報を返します。これは、「Loading...」を追加します。これは非常に調和的です。もちろん、ajax も騙すことができますが、userAgent の騙しと比較すると、少し面倒です。目的は、それが WeChat 側であるかどうかを検出することです。私は、コードがフィルタリングされることを嫌いますので、特定のコードは書きません
。
http://www.bkjia.com/PHPjc/761017.html
www.bkjia.comtruehttp://www.bkjia.com/PHPjc/761017.html技術記事次のようにコードをコピーします: $user_agent = $_SERVER['HTTP_USER_AGENT']; if (strpos($user_agent, 'MicroMessenger') === false) { // WeChat 以外のブラウザは閲覧を禁止します echo "HTTP/1.1 401 Un. .