php判断终端类型(手机与pc)

function isPhone() { 
  // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 
  if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) { 
    return true; 
  } 
  //如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息 
  if (isset($_SERVER['HTTP_VIA'])) { 
    //找不到为flase,否则为true 
    if(stristr($_SERVER['HTTP_VIA'], "wap")) 
    { 
      return true; 
    } 
  } 
  //脑残法,判断手机发送的客户端标志,兼容性有待提高 
  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', 
      'phone', 
    ); 
    // 从HTTP_USER_AGENT中查找手机浏览器的关键字 
    if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) { 
      return true; 
    } 
  } 
  //协议法,因为有可能不准确,放到最后判断 
  if (isset($_SERVER['HTTP_ACCEPT'])) { 
    // 如果只支持wml并且不支持html那一定是移动设备 
    // 如果支持wml和html但是wml在html之前则是移动设备 
    if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) { 
      return true; 
    } 
  } 
  return false; 
} 
if(isPhone()){ 
   echo "手机"; 
}else{ 
   echo "电脑"; 
}

 

posted @ 2024-04-27 04:23  落花之语  阅读(25)  评论(0编辑  收藏  举报