PHP实现判断客户端小程序环境是安卓Android环境还是苹果IOS环境

310 阅读1分钟

PHP中识别客户端环境一般是通过请求头USER_AGENT来实现

判断是否为微信客户端
通过UESR_AGENT中是否包含MicroMessenger关键词来识别。

微信小程序环境
1.通过UESR_AGENT中是否包含miniprogram关键词来识别,此方式仅安卓手机可用,苹果手机UESR_AGENT中不返回miniprogram关键词。

2.通过判断请求来源Referer域名来识别,小程序中所有请求来源referer格式固定为 servicewechat.com/{appid}/{ve… ,其中{appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本;

如果想识别开发环境还是线上环境,也可以通过版本号来识别。

可以参考此小程序官方文档:developers.weixin.qq.com/miniprogram…

3.通过前端返回客户端信息,前端每次请求都携带当前客户端环境如:xxx.com?client=wechat

示例代码

//获取用户客户端
public function getUserClient()
{
    $user_agent = strtolower($this->request()->getHeader('user-agent')[0] ?? '');
    //微信客户端
    if (!empty($user_agent) && strpos($user_agent, strtolower('MicroMessenger')) !== false) {
        $referer = $this->request()->getHeaderLine('referer');
        if (strpos($user_agent, "miniprogram") || strpos($referer, "servicewechat.com")) {
            $client = '小程序';
        } else {
            $client = 'H5';
        }
    } else if (strpos($user_agent, "uni-app") || strpos($user_agent, strtolower('Html5Plus'))) {          //判断是否为APP
        if (strpos($user_agent, strtolower('Android')) !== false) {
            $client = '安卓APP';
        } else {
            $client = '苹果APP';
        }
    } else {
        $client = 'H5';
    }
    return $client;
}