怎么禁止电脑版浏览器访问网站,包括微信电脑版,只让微信手机客户端访问
$content = file_get_contents ( 'php://input' );
! empty ( $content ) || die ( '这是微信请求的接口地址,直接在浏览器里无效' ); var ua = navigator.userAgent.toLowerCase();
var isWeixin = ua.indexOf('micromessenger') != -1;
var isMobile = ua.indexOf('mobile') != -1;
if (!isWeixin || !isMobile) {
document.head.innerHTML = '<title>抱歉,出错了</title><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0"><link rel="stylesheet" type="text/css" href="https://res.wx.qq.com/open/libs/weui/0.4.1/weui.css">';
document.body.innerHTML = '<div class="weui_msg"><div class="weui_icon_area"><i class="weui_icon_info weui_icon_msg"></i></div><div class="weui_text_area"><h4 class="weui_msg_title">请在微信手机客户端打开链接</h4></div></div>';
}4 回答962 阅读
1 回答853 阅读✓ 已解决
1 回答1.1k 阅读
1 回答642 阅读✓ 已解决
2 回答773 阅读
2 回答619 阅读
2 回答600 阅读
微信电脑版是完全模拟的微信手机客户端(至少腾讯是期望这么做),所以想要区分微信电脑版和微信手机客户端是不可能的。
至于禁止电脑版浏览器访问网站,只让微信手机客户端访问。
方法1,检查UA,简单但不十分有效,用户可以伪造UA。
方法2,检查openid,有效但有局限性,用户打开网页时,访问已验证的域名,微信会附带上openid作为参数(本身目的是用于微信登录),可以检查这个参数,有这个参数的话就可以确定是微信端访问了。