Heim >Backend-Entwicklung >PHP-Tutorial >php怎么判断页面是否微信打开

php怎么判断页面是否微信打开

WBOY
WBOYOriginal
2016-07-25 09:12:002171Durchsuche

有如下问题: 让一个页面在微信上打开,PC上不能直接打开。

例子,php判断页面是否由微信打开。

  1. $user_agent = $_SERVER['HTTP_USER_AGENT'];
  2. if (strpos($user_agent, 'MicroMessenger') === false) {
  3. // 非微信浏览器禁止浏览
  4. echo "HTTP/1.1 401 Unauthorized";
  5. } else {
  6. // 微信浏览器,允许访问
  7. echo "MicroMessenger";
  8. // 获取版本号
  9. preg_match('/.*?(MicroMessenger\/([0-9.]+))\s*/', $user_agent, $matches);
  10. echo '
    Version:'.$matches[2];
  11. }
复制代码

下面分别是 Android, WinPhone, iPhone 的 HTTP_USER_AGENT 信息。

  1. "HTTP_USER_AGENT": "Mozilla/5.0 (Linux; U; Android 4.1; zh-cn; Galaxy Nexus Build/Wind-Galaxy Nexus-V1.2) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30 MicroMessenger/5.0.1.352",
  2. "HTTP_USER_AGENT": "Mozilla/5.0 (compatible; MSIE 10.0; Windows Phone 8.0; Trident/6.0; IEMobile/10.0; ARM; Touch; NOKIA; Nokia 920T)",
  3. "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 判断本来就是很假的事情、所以我觉得应该用 js 判断是否存在 WeixinJSBridge ,然后 ajax 给 php php检测到了然后返回真正的页面信息、期间加一个 “玩命加载中...” 这样就很和谐了、当然 ajax 的话,也是可以欺骗的,但是相对 userAgent 欺骗来说,就要麻烦一点了、 不过我们的目的是检测是否是微信端,而不是欺骗的问题、具体代码我就不写了,因为最讨厌那种拿来主义了、无限的复制黏贴,而且有时候代码被过滤了一部分也不管、



Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn