Maison >développement back-end >Problème PHP >Comment PHP détermine-t-il si l'accès se fait depuis un téléphone mobile ou un ordinateur ?

Comment PHP détermine-t-il si l'accès se fait depuis un téléphone mobile ou un ordinateur ?

PHPz
PHPzoriginal
2020-09-25 15:45:284274parcourir

Comment PHP détermine s'il s'agit d'un accès mobile ou d'un accès ordinateur : 1. S'il y a [HTTP_X_WAP_PROFILE], il doit s'agir d'un appareil mobile ; 2. Recherchez le mot-clé du navigateur mobile dans [HTTP_USER_AGENT] ; Si seulement s'il prend en charge wml mais pas html, il doit s'agir d'un appareil mobile.

Comment PHP détermine-t-il si l'accès se fait depuis un téléphone mobile ou un ordinateur ?

Recommandé : "Tutoriel vidéo PHP"

Comment déterminer si l'accès se fait via un téléphone mobile ou un ordinateur :

1. S'il y a HTTP_X_WAP_PROFILE, il doit s'agir d'un appareil mobile

//判断电脑还是手机访问
    function is_mobile(){ 
        
        if (isset ($_SERVER['HTTP_X_WAP_PROFILE']))
        {
            return true;
        } 
        // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
        if (isset ($_SERVER['HTTP_VIA']))
        { 
            // 找不到为flase,否则为true
            return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
        }

2. Méthode sans cervelle, jugez le drapeau client envoyé par le téléphone mobile, la compatibilité doit être améliorée

if (isset ($_SERVER['HTTP_USER_AGENT']))
{
    $clientkeywords = array ('nokia',
        'sony',
        'ericsson',
        'mot',
        'samsung',
        'htc',
        'sgh',
        'lg',
        'sharp',
        'sie-',
        'philips',
        'panasonic',
        'alcatel',
        'lenovo',
        'iphone',
        'ipod',
        'blackberry',
        'meizu',
        'android',
        'netfront',
        'symbian',
        'ucweb',
        'windowsce',
        'palm',
        'operamini',
        'operamobi',
        'openwave',
        'nexusone',
        'cldc',
        'midp',
        'wap',
        'mobile'
        ); 
    // 从HTTP_USER_AGENT中查找手机浏览器的关键字
    if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT'])))
    {
        return true;
    } 
}
.

3. Méthode protocolaire, parce qu'elle n'est peut-être pas exacte, je laisse le soin au jugement final

  if (isset ($_SERVER['HTTP_ACCEPT']))
    { 
        // 如果只支持wml并且不支持html那一定是移动设备
        // 如果支持wml和html但是wml在html之前则是移动设备
        if ((strpos($_SERVER[&#39;HTTP_ACCEPT&#39;], &#39;vnd.wap.wml&#39;) !== false) && (strpos($_SERVER[&#39;HTTP_ACCEPT&#39;], &#39;text/html&#39;) === false || (strpos($_SERVER[&#39;HTTP_ACCEPT&#39;], &#39;vnd.wap.wml&#39;) < strpos($_SERVER[&#39;HTTP_ACCEPT&#39;], &#39;text/html&#39;))))
        {
            return true;
        } 
    } 
    return false;
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn