sostanzialmente viene salvato il tipo di dispositivio(computer,smartphone,tablet), casa produttrice (solo del tablet e smartphone), sistema operativo e browser.
ma ho notato nel DB che per pochi risultati, viene un risultato un pò anomalo.
tutte le tuple anomale contenevano questo risultato :
Browser| dispositivo | marca dispositivo | sistema operativo
IE | smartphone | iphone | Android OS
direi che è un pò strano che android sia stato trovato su un'iphone, su 460 risultati sono uscite 15 righe così, ma tutte le altre sono lecite dato che danno ad esempio iphone ios o samsung android os ad esempio, questo è il codice che ho sviluppato per generare le 4 variabili da inserire nel DB :
Codice: Seleziona tutto
<?php
require_once 'function/Mobile-Detect/Mobile_Detect.php';
$detect = new Mobile_Detect;
$deviceType = ($detect->isMobile() ? ($detect->isTablet() ? 'tablet' : 'phone') : 'computer');
$model = 'Non Specificato';
$so = 'Non specificato';
$browser = 'Non specificato';
function getBrowser()
{
$u_agent = $_SERVER['HTTP_USER_AGENT'];
$bname = 'Unknown';
$platform = 'Unknown';
$version= "";
//First get the platform?
if (preg_match('/linux/i', $u_agent)) {
$platform = 'linux';
}
elseif (preg_match('/macintosh|mac os x/i', $u_agent)) {
$platform = 'mac';
}
elseif (preg_match('/windows|win32/i', $u_agent)) {
$platform = 'windows';
}
// Next get the name of the useragent yes seperately and for good reason
if(preg_match('/MSIE/i',$u_agent) && !preg_match('/Opera/i',$u_agent))
{
$bname = 'Internet Explorer';
$ub = "MSIE";
}
elseif(preg_match('/Firefox/i',$u_agent))
{
$bname = 'Mozilla Firefox';
$ub = "Firefox";
}
elseif(preg_match('/Chrome/i',$u_agent))
{
$bname = 'Google Chrome';
$ub = "Chrome";
}
elseif(preg_match('/Safari/i',$u_agent))
{
$bname = 'Apple Safari';
$ub = "Safari";
}
elseif(preg_match('/Opera/i',$u_agent))
{
$bname = 'Opera';
$ub = "Opera";
}
elseif(preg_match('/Netscape/i',$u_agent))
{
$bname = 'Netscape';
$ub = "Netscape";
}
// finally get the correct version number
$known = array('Version', $ub, 'other');
$pattern = '#(?<browser>' . join('|', $known) .
')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';
if (!preg_match_all($pattern, $u_agent, $matches)) {
// we have no matching number just continue
}
// see how many we have
$i = count($matches['browser']);
if ($i != 1) {
//we will have two since we are not using 'other' argument yet
//see if version is before or after the name
if (strripos($u_agent,"Version") < strripos($u_agent,$ub)){
$version= $matches['version'][0];
}
else {
$version= $matches['version'][1];
}
}
else {
$version= $matches['version'][0];
}
// check if we have a number
if ($version==null || $version=="") {$version="?";}
return array(
'userAgent' => $u_agent,
'name' => $bname,
'version' => $version,
'platform' => $platform,
'pattern' => $pattern
);
}
// now try it
function sistemaOP($detect) {
switch ($detect) {
case $detect->isiOS():
$typeso = "iOS";
break;
case $detect->isAndroidOS():
$typeso = "Android OS";
break;
case $detect->isBlackBerryOS():
$typeso = "Black Berry OS";
break;
case $detect->isPalmOS():
$typeso = "Palm OS";
break;
case $detect->isSymbianOS():
$typeso = "Symbian OS";
break;
case $detect->isWindowsMobileOS():
$typeso = "Windows Mobile OS";
break;
case $detect->isWindowsPhoneOS():
$typeso = "Windows Phone OS";
break;
case $detect->isMeeGoOS():
$typeso = "Mee Go OS";
break;
case $detect->isMaemoOS():
$typeso = "Maemo OS";
break;
case $detect->isJavaOS():
$typeso = "Java OS";
break;
case $detect->iswebOS():
$typeso = "web OS";
break;
case $detect->isbadaOS():
$typeso = "bada OS";
break;
case $detect->isBREWOS():
$typeso = "BREWOS";
break;
default:
$typeso = "Non specificato";
}
return $typeso;
}
function browserPhone($detectb) {
switch ($detectb) {
case $detectb->isChrome():
$typeb = "Chrome";
break;
case $detectb->isDolfin():
$typeb = "Dolfin";
break;
case $detectb->isOpera():
$typeb = "Opera";
break;
case $detectb->isSkyfire():
$typeb = "Skyfire";
break;
case $detectb->isIE():
$typeb = "IE";
break;
case $detectb->isFirefox():
$typeb = "Firefox";
break;
case $detectb->isBolt():
$typeb = "Bolt";
break;
case $detectb->isTeaShark():
$typeb = "Tea Shark";
break;
case $detectb->isBlazer():
$typeb = "Blazer";
break;
case $detectb->isSafari():
$typeb = "Safari";
break;
case $detectb->isTizen():
$typeb = "Tizen";
break;
case $detectb->isUCBrowser():
$typeb = "UC Browser";
break;
case $detectb->isbaiduboxapp():
$typeb = "baiduboxapp";
break;
case $detectb->isbaidubrowser():
$typeb = "baidu browser";
break;
case $detectb->isDiigoBrowser():
$typeb = "Diigo Browser";
break;
case $detectb->isPuffin():
$typeb = "Puffin";
break;
case $detectb->isMercury():
$typeb = "Mercury";
break;
case $detectb->isObigoBrowser():
$typeb = "Obigo Browser";
break;
case $detectb->isNetFront():
$typeb = "Net Front";
break;
case $detectb->isGenericBrowser():
$typeb = "Generic Browser";
break;
case $detectb->isPaleMoon():
$typeb = "Pale Moon";
break;
default:
$typeb = "Non specificato";
}
return $typeb;
}
if ($deviceType == 'phone') {
switch ($detect) {
case $detect->isIphone():
$model = "iphone";
break;
case $detect->isBlackBerry():
$model = "Black Berry";
break;
case $detect->isHTC():
$model = "HTC";
break;
case $detect->isNexus():
$model = "Nexus";
break;
case $detect->isDell():
$model = "Dell";
break;
case $detect->isMotorola():
$model = "Motorola";
break;
case $detect->isSamsung():
$model = "Samsung";
break;
case $detect->isLG():
$model = "LG";
break;
case $detect->isSony():
$model = "Sony";
break;
case $detect->isAsus():
$model = "Asus";
break;
case $detect->isNokiaLumia():
$model = "Nokia Lumia";
break;
case $detect->isMicromax():
$model = "Micromax";
break;
case $detect->isPalm():
$model = "Palm";
break;
case $detect->isVertu():
$model = "Vertu";
break;
case $detect->isPantech():
$model = "Pantech";
break;
case $detect->isFly():
$model = "Fly";
break;
case $detect->isWiko():
$model = "Wiko";
break;
case $detect->isiMobile():
$model = "iMobile";
break;
case $detect->isSimValley():
$model = "SimValley";
break;
case $detect->isWolfgang():
$model = "Wolfgang";
break;
case $detect->isAlcatel():
$model = "Alcatel";
break;
case $detect->isNintendo():
$model = "Nintendo";
break;
case $detect->isAmoi():
$model = "Amoi";
break;
case $detect->isINQ():
$model = "INQ";
break;
case $detect->isGenericPhone():
$model = "GenericPhone";
break;
}
$so = sistemaOP($detect);
$browser = browserPhone($detect);
} else if ($deviceType == 'tablet') {
switch ($detect) {
case $detect->isiPad():
$model = "iPad";
break;
case $detect->isNexusTablet():
$model = "Nexus Tablet";
break;
case $detect->isSamsungTablet():
$model = "Samsung Tablet";
break;
case $detect->isKindle():
$model = "Kindle";
break;
case $detect->isSurfaceTablet():
$model = "Surface Tablet";
break;
case $detect->isHPTablet():
$model = "HP Tablet";
break;
case $detect->isAsusTablet():
$model = "Asus Tablet";
break;
case $detect->isBlackBerryTablet():
$model = "Black Berry Tablet";
break;
case $detect->isHTCtablet():
$model = "HTC tablet";
break;
case $detect->isMotorolaTablet():
$model = "Motorola Tablet";
break;
case $detect->isNookTablet():
$model = "Nook Tablet";
break;
case $detect->isAcerTablet():
$model = "Acer Tablet";
break;
case $detect->isToshibaTablet():
$model = "Toshiba Tablet";
break;
case $detect->isLGTablet():
$model = "LG Tablet";
break;
case $detect->isFujitsuTablet():
$model = "Fujitsu Tablet";
break;
case $detect->isPrestigioTablet():
$model = "Prestigio Tablet";
break;
case $detect->isLenovoTablet():
$model = "Lenovo Tablet";
break;
case $detect->isDellTablet():
$model = "Dell Tablet";
break;
case $detect->isYarvikTablet():
$model = "Yarvik Tablet";
break;
case $detect->isMedionTablet():
$model = "Wolfgang";
break;
case $detect->isArnovaTablet():
$model = "Arnova Tablet";
break;
case $detect->isIntensoTablet():
$model = "Intenso Tablet";
break;
case $detect->isIRUTablet():
$model = "IRU Tablet";
break;
case $detect->isMegafonTablet():
$model = "Megafon Tablet";
break;
case $detect->isEbodaTablet():
$model = "Eboda Tablet";
break;
case $detect->isAllViewTablet();
$model = 'All View Tablet';
break;
case $detect->isArchosTablet();
$model = 'Archos Tablet';
break;
case $detect->isAinolTablet();
$model = 'Ainol Tablet';
break;
case $detect->isNokiaLumiaTablet();
$model = 'Nokia Lumia Tablet';
break;
case $detect->isSonyTablet();
$model = 'Sony Tablet';
break;
case $detect->isPhilipsTablet();
$model = 'Philips Tablet';
break;
case $detect->isCubeTablet();
$model = 'Cube Tablet';
break;
case $detect->isCobyTablet();
$model = 'Coby Tablet';
break;
case $detect->isMIDTablet();
$model = 'MID Tablet';
break;
case $detect->isMSITablet();
$model = 'MSI Tablet';
break;
case $detect->isSMiTTablet();
$model = 'SMiT Tablet';
break;
case $detect->isRockChipTablet();
$model = 'Rock Chip Tablet';
break;
case $detect->isFlyTablet();
$model = 'Fly Tablet';
break;
case $detect->isbqTablet();
$model = 'bq Tablet';
break;
case $detect->isHuaweiTablet();
$model = 'Huawei Tablet';
break;
case $detect->isNecTablet();
$model = 'Nec Tablet';
break;
case $detect->isPantechTablet();
$model = 'Pantech Tablet';
break;
case $detect->isBronchoTablet();
$model = 'Broncho Tablet';
break;
case $detect->isVersusTablet();
$model = 'Versus Tablet';
break;
case $detect->isZyncTablet();
$model = 'Zync Tablet';
break;
case $detect->isPositivoTablet();
$model = 'Positivo Tablet';
break;
case $detect->isNabiTablet();
$model = 'Nabi Tablet';
break;
case $detect->isKoboTablet();
$model = 'Kobo Tablet';
break;
case $detect->isDanewTablet();
$model = 'Danew Tablet';
break;
case $detect->isTexetTablet();
$model = 'Texet Tablet';
break;
case $detect->isPlaystationTablet();
$model = 'Playstation Tablet';
break;
case $detect->isTrekstorTablet();
$model = 'Trekstor Tablet';
break;
case $detect->isPyleAudioTablet();
$model = 'Pyle Audio Tablet';
break;
case $detect->isAdvanTablet();
$model = 'Advan Tablet';
break;
case $detect->isDanyTechTablet();
$model = 'Dany Tech Tablet';
break;
case $detect->isGalapadTablet();
$model = 'Galapad Tablet';
break;
case $detect->isMicromaxTablet();
$model = 'Micromax Tablet';
break;
case $detect->isKarbonnTablet();
$model = 'Karbonn Tablet';
break;
case $detect->isAllFineTablet();
$model = 'Fine Tablet';
break;
case $detect->isPROSCANTablet();
$model = 'PROSCAN Tablet';
break;
case $detect->isYONESTablet();
$model = 'YONES Tablet';
break;
case $detect->isChangJiaTablet();
$model = 'Chang Jia Tablet';
break;
case $detect->isGUTablet();
$model = 'GU Tablet';
break;
case $detect->isPointOfViewTablet();
$model = 'Point Of View Tablet';
break;
case $detect->isOvermaxTablet();
$model = 'Overmax Tablet';
break;
case $detect->isHCLTablet();
$model = 'HCL Tablet';
break;
case $detect->isDPSTablet();
$model = 'DPS Tablet';
break;
case $detect->isVistureTablet();
$model = 'Visture Tablet';
break;
case $detect->isCrestaTablet();
$model = 'Cresta Tablet';
break;
case $detect->isMediatekTablet();
$model = 'Mediatek Tablet';
break;
case $detect->isConcordeTablet();
$model = 'Concorde Tablet';
break;
case $detect->isGoCleverTablet();
$model = 'Go Clever Tablet';
break;
case $detect->isModecomTablet();
$model = 'Modecom Tablet';
break;
case $detect->isVoninoTablet();
$model = 'Vonino Tablet';
break;
case $detect->isECSTablet();
$model = 'ECS Tablet';
break;
case $detect->isStorexTablet();
$model = 'Storex Tablet';
break;
case $detect->isVodafoneTablet();
$model = 'Vodafone Tablet';
break;
case $detect->isEssentielBTablet();
$model = 'Essentiel B Tablet';
break;
case $detect->isRossMoorTablet();
$model = 'Ross Moor Tablet';
break;
case $detect->isiMobileTablet();
$model = 'iMobile Tablet';
break;
case $detect->isTolinoTablet();
$model = 'Tolino Tablet';
break;
case $detect->isAudioSonicTablet();
$model = 'Audio Sonic Tablet';
break;
case $detect->isAMPETablet();
$model = 'AMPE Tablet';
break;
case $detect->isSkkTablet();
$model = 'Skk Tablet';
break;
case $detect->isTecnoTablet();
$model = 'Tecno Tablet';
break;
case $detect->isJXDTablet();
$model = 'JXD Tablet';
break;
case $detect->isiJoyTablet();
$model = 'Joy Tablet';
break;
case $detect->isFX2Tablet();
$model = 'FX2 Tablet';
break;
case $detect->isXoroTablet();
$model = 'Xoro Tablet';
break;
case $detect->isViewsonicTablet();
$model = 'Viewsonic Tablet';
break;
case $detect->isOdysTablet();
$model = 'Odys Tablet';
break;
case $detect->isCaptivaTablet();
$model = 'Captiva Tablet';
break;
case $detect->isIconbitTablet();
$model = 'Iconbit Tablet';
break;
case $detect->isTeclastTablet();
$model = 'Teclast Tablet';
break;
case $detect->isOndaTablet();
$model = 'Onda Tablet';
break;
case $detect->isJaytechTablet();
$model = 'Jaytech Tablet';
break;
case $detect->isBlaupunktTablet();
$model = 'Blaupunkt Tablet';
break;
case $detect->isDigmaTablet();
$model = 'Digma Tablet';
break;
case $detect->isEvolioTablet();
$model = 'Evolio Tablet';
break;
case $detect->isLavaTablet();
$model = 'Lava Tablet';
break;
case $detect->isAocTablet();
$model = 'Aoc Tablet';
break;
case $detect->isMpmanTablet();
$model = 'Mpman Tablet';
break;
case $detect->isCelkonTablet();
$model = 'Celkon Tablet';
break;
case $detect->isWolderTablet();
$model = 'Wolder Tablet';
break;
case $detect->isMiTablet();
$model = 'Mi Tablet';
break;
case $detect->isNibiruTablet();
$model = 'Nibiru Tablet';
break;
case $detect->isNexoTablet();
$model = 'Nexo Tablet';
break;
case $detect->isLeaderTablet();
$model = 'Leader Tablet';
break;
case $detect->isUbislateTablet();
$model = 'Ubislate Tablet';
break;
case $detect->isPocketBookTablet();
$model = 'Pocket Book Tablet';
break;
case $detect->isKocasoTablet();
$model = 'Kocaso Tablet';
break;
case $detect->isHudl();
$model = 'Hudl';
break;
case $detect->isTelstraTablet();
$model = 'Telstra Tablet';
break;
case $detect->isGenericTablet();
$model = 'Generic Tablet';
break;
}
$so = sistemaOP($detect);
$browser = browserPhone($detect);
} else {
$ua=getBrowser();
$model = $deviceType;
$so = $ua['platform'];
$browser = $ua['name'];
}
?>