判断页面是否是微信打开的

原文:判断页面是否是微信打开的

今天遇到一问题,让一个页面在微信上打开,PC上不能直接打开,网上找了许久,没得到满意的答案,而且千篇一律。

<?php
$user_agent = $_SERVER[‘HTTP_USER_AGENT‘];
if (strpos($user_agent, ‘MicroMessenger‘) === false) {
    // 非微信浏览器禁止浏览
    echo "HTTP/1.1 401 Unauthorized";
} else {
    // 微信浏览器,允许访问
    echo "MicroMessenger";
    // 获取版本号
    preg_match(‘/.*?(MicroMessenger\/([0-9.]+))\s*/‘, $user_agent, $matches);
    echo ‘<br>Version:‘.$matches[2];
}

好吧,我也不能直接反驳,不过,这个确实非常不靠谱、
拿数据说话吧。
下面分别是 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 欺骗来说,就要麻烦一点了、
不过我们的目的是检测是否是微信端,而不是欺骗的问题、
具体代码我就不写了,因为最讨厌那种拿来主义了、、
无限的复制黏贴,而且有时候代码被过滤了一部分也不管、

时间: 2024-10-07 02:35:45

判断页面是否是微信打开的的相关文章

判断是否是用微信打开、是否是用微信朋友圈打开

①判断是否是用微信打开 <script>        $(window).on("load",function(){            function is_weixin() {                var ua = navigator.userAgent.toLowerCase();                if (ua.match(/MicroMessenger/i) == "micromessenger") {      

判断是在企业微信打开 还是 在浏览器打开

if (this.is_weixin()) { this.qixin = true this.browser = false } else { this.qixin = false this.browser = true } 原文地址:https://www.cnblogs.com/candy-Yao/p/9948308.html

jq判断是否是在微信中打开

根据根据navigator.userAgent判断浏览器类型判断页面是否在微信浏览器中打开. function is_weixn(){ var ua = navigator.userAgent.toLowerCase(); if(ua.match(/MicroMessenger/i)=="micromessenger") { return true; } else { return false; } }

微信中如何实现APP分享链接判断,实现在默认浏览器打开

要做app的分享到微信的页面,如果手机已经安装了这个APP就显示"打开应用"按钮,如果手机没有安装app就显示"下载应用"按钮.但是 如果用户是在微信环境中打开了这个链接是无法进行下载和唤醒APP的,所以要价格判断 如果用户在微信打开了,需要跳到浏览器打开下载链接或者唤醒APP! 现在可以实现安卓手机的话是通过点击链接,直接跳转出微信.自动打开手机默认的浏览器 打开月牙跳转网址:http://www.aizhuanlove.cn/按步骤操作即可实现 原文地址:htt

JS判断页面是在浏览器还是微信打开

一.Navigator对象 1.获取用户的浏览器信息. let ua = navigator.userAgent.toLowerCase(); 打印一下ua的结果: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36 //电脑是mac 也可以尝试在不同环境打印出来的值, 2.判断页面是在移动端还是PC端: l

html5页面js判断是否安装app,以及判断是否在app内部打开html5页面

一.html5页面js判断是否安装app 目前还不能通过浏览器直接判断是否安装app 通过谷歌参考别人的方式和测试 我们知道安装了某个app后通过scheme跳转协议(引荐:http://www.jianshu.com/p/eed01a661186)进入到app 没有安装时点击链接是无效的 所以通过点击链接后到执行进入app之间的时间差来判断是否安装app 1.下面只是处理了安卓系统时 if (navigator.userAgent.match(/android/i) ){ var nowTim

微信与支付宝支付 浏览器判断&amp;页面关闭

以下为php浏览器头判断代码实例: public function getUserAgent(){ return isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';} $agent = self::getUserAgent(); if (strpos($agent, 'MicroMessenger') === false) { throw new Q_Exception('请使用微信打开', Lib_Cod

php判断页面来自手机或者微信 $_SERVER[&#39;HTTP_USER_AGENT&#39;]

function is_phone(){ $agent = strtolower($_SERVER['HTTP_USER_AGENT']); //pc请求头信息数组 $pc_arr=array('windows nt','macintosh','ipad','baiduspider','spider'); //如确认为移动端则更改默认值 //没找到pc数组元素时判断为移动端 foreach($pc_arr as $k => $v){ $pc=strpos($agent, $v) ? true :

微信里如何判断页面被分享成功

var shareData = { img_url: "", img_width: 200, img_height: 200, link: '', desc: '', title: '', appid: 0 }; document.addEventListener('WeixinJSBridgeReady', function onBridgeReady() { // 发送给好友 WeixinJSBridge.on('menu:share:appmessage', function(a