php判斷終端型別(手機與pc)

崔子墨發表於2024-04-27
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 "電腦"; 
}

相關文章