Necesito realizar ciertas cosas en función del navegador del cliente, pero desde php .... sabeís si hay alguna función que me pueda ayudar?
Muchas gracias de antemano.
| ||||
snifer <?php $HUA=$_SERVER['HTTP_USER_AGENT']; $HUA=strtolower($HUA); //*********** Determinamos el navegador ******** //Declaramos las variables navegador, version, sistema $navegador="Desconocido"; $version="Desconocido"; $sistema="Desconocido"; //Proceso de búsqueda: //1. navegador // a. Versión //2. sistema Operativo //(Búsquedas no sensibles a mayusculas) //DETECCIÓN DE navegador //~~~~~~~~~~~~~~~~~~~~~~ //Detección de Opera //Exemplo: Opera/6.05 (Windows XP; U) [es-ES] if (stristr($HUA,"opera")) { $navegador="Opera"; $K=strpos($HUA, "opera"); $version=substr($HUA,$K+6,5); } elseif (stristr($HUA,"aweb")) { $navegador="AWeb"; $sistema="Amiga OS"; } elseif (stristr($HUA, "msie")) { $navegador="Internet Explorer"; $K=strpos($HUA, "msie"); $temp=substr($HUA,$K); $P=strpos($temp, chr(59)); $version=substr($temp,5,$P-5); if (stristr($HUA,"aol")) { $K=strpos($HUA, "aol"); $temp=substr($HUA,$K); $P=strpos($temp, chr(59)); $navegador.=" (AOL ".substr($temp,4,$P-4).")"; } elseif (stristr($HUA,"msn")) { $K=strpos($HUA, "msn"); $temp=substr($HUA,$K); $P=strpos($temp, chr(59)); $navegador.=" (MSN ".substr($temp,4,$P-4).")"; } } elseif (stristr($HUA,"mozilla") && ! (stristr($HUA,"opera") || stristr($HUA,"msie"))) { $navegador="Mozilla"; if (stristr($HUA,"rv:")) { $K=strpos($HUA, "rv:"); $P=strrpos($HUA, chr(41))-$K; $version=substr($HUA,$K+3,$P-3); } elseif (stristr($HUA,"mozilla/5.0")) { $version="5.0"; } else { $navegador="Netscape Navigator"; $K=strpos($HUA,"/"); $P=strpos($HUA," "); $version=substr($HUA,$K+1, $P-7); if (stristr($HUA,"c-cck-mcd")) { $version=str_replace("c-cck-mcd","",$version); } if (stristr($HUA,"sc-sgi")) { $version=str_replace("sc-sgi","",$version); } if(stristr($HUA,"gold")) { $version=str_replace("gold"," Gold",$version); $version=str_replace("Gold"," Gold",$version); } } if (stristr($HUA,"phoenix")) { $navegador="Phoenix"; $K=strrpos($HUA,"phoenix"); $version=substr($HUA,$K+8); //Cambia o '/' por un espacio $version=str_replace("/"," ",$version); } elseif (stristr($HUA,"netscape")) { $navegador="Netscape"; $K=strrpos($HUA,"netscape"); $version=substr($HUA,$K+9); $version=str_replace("/"," ",$version); } elseif (stristr($HUA,"firebird")) { $navegador="Firebird"; $K=strrpos($HUA,"firebird"); $version=substr($HUA,$K+9); $version=str_replace("/"," ",$version); } elseif (stristr($HUA,"Chimera")) { $navegador="Chimera"; $K=strrpos($HUA,"chimera"); $version=substr($HUA,$K+7); $version=str_replace("/"," ",$version); $sistema="Mac OS X"; } elseif (stristr($HUA,"Camino")) { $navegador="Camino"; $K=strrpos($HUA,"camino"); $version=substr($HUA,$K+6); $version=str_replace("/"," ",$version); $version=str_replace("+","",$version); $sistema="Mac OS X"; } elseif (stristr($HUA,"safari")) { $navegador="Safari"; $K=strrpos($HUA,"safari"); $version="1.0 Build ".substr($HUA,$K+7); } elseif (stristr($HUA,"konqueror")) { $navegador="Konqueror"; $K=strpos($HUA, "konqueror"); $temp=substr($HUA,$K); $P=strpos($temp, chr(59)); $version=substr($temp,10,$P-10); } elseif (stristr($HUA,"galeon")) { $navegador="Galeon"; $K=strpos($HUA, "galeon"); $temp=substr($HUA,$K); $P=strpos($temp, chr(32)); $version=substr($temp,7,$P-7); } elseif (stristr($HUA,"MultiZilla")) { $navegador="MultiZilla"; $K=strpos($HUA,"multizilla"); $temp=substr($HUA,$K); $K=strpos($temp,"v"); $temp=substr($temp,$K+1); $P=strpos($temp," "); $version=substr($temp,0,$P); } elseif (stristr($HUA,"netpositive") || stristr($HUA,"zonesurf")) { $navegador="NetPositive"; $K=strpos($HUA, "netpositive"); $temp=substr($HUA,$K); $P=strrpos($temp, chr(41)); $version=substr($temp,12,$P-12); $sistema="BeOS"; } elseif (stristr($HUA,"qnx voyager")) { $navegador="Voyager"; $K=strpos($HUA, "qnx voyager"); $temp=substr($HUA,$K); $P=strpos($temp, chr(59)); $version=substr($temp,12,$P-12); } } elseif (stristr($HUA,"lynx") || stristr($HUA,"links")) { $navegador="Lynx"; if (stristr($HUA,"lynx")) { $P=strpos($HUA," "); $version=substr($HUA,5, $P-5); } elseif (stristr($HUA,"0.")) { $P=strpos($HUA,chr(59)); $version=substr($HUA,7, $P-7); } } elseif (stristr($HUA,"arachne")) { $navegador="Arachne"; } elseif (stristr($HUA,"googlebot")) { $navegador="Googlebot"; } elseif(stristr($HUA,"infomine")) { $navegador="Infomine"; } elseif(stristr($HUA,"ia_archiver")) { $navegador="Archive.org Spider"; } elseif(stristr($HUA,"msnbot")) { $navegador="MSN Bot"; } elseif(stristr($HUA,"validator") && stristr($HUA,"w3c")) { $navegador="W3C Validator"; } if (stristr($HUA,"dos")) { $sistema="MS-DOS"; } if (stristr($HUA,"amiga")) { $sistema="Amiga OS"; } //Detección de Windows if (stristr($HUA,"windows 3.1") || (stristr($HUA,"win16")) || (stristr($HUA,"win95") && stristr($HUA,"16bit"))) { $sistema="Windows 3.1/3.11"; } elseif (stristr($HUA,"nt 3.51") || (stristr($HUA,"nt3.51"))) { $sistema="Windows nt 3.51"; } elseif (stristr($HUA,"windows 95") || (stristr($HUA,"win95"))) { $sistema="Windows 95"; } elseif (stristr($HUA,"windows me") || (stristr($HUA,"win") && stristr($HUA,"4.90"))) { $sistema="Windows Millenium Edition"; } elseif (stristr($HUA,"windows 98") || (stristr($HUA,"win98")) || (stristr($HUA,"win") && stristr($HUA,"3.95"))) { $sistema="Windows 98"; } elseif (stristr($HUA,"nt 5.0") || stristr($HUA,"windows 2000")) { $sistema="Windows 2000"; } elseif (stristr($HUA,"nt 5.1") || stristr($HUA,"windows xp")) { $sistema="Windows XP"; } elseif (stristr($HUA,"nt 5.2")) { $sistema="Windows Server 2003"; } elseif (stristr($HUA,"windows CE")) { $sistema="Windows Pocket PC"; } elseif (stristr($HUA,"nt 4") || stristr($HUA,"nt4") || stristr($HUA,"winnt") || stristr($HUA,"windows nt")) { $sistema="Windows NT 4.0"; } elseif (stristr($HUA,"windows")) { $sistema="Windows"; } //Detección de Mac OS if (stristr($HUA,"mac os x")) { $sistema="Mac OS X"; } elseif (stristr($HUA,"68k")) { $sistema="Mac 68K"; } elseif (stristr($HUA,"mac_powerpc") || stristr($HUA,"ppc") || stristr($HUA,"macintosh")) { $sistema="Mac OS 8/9"; } //Detección de sistemas baseados en Unix (Linux, Solaris, HP-UX, BeOS, QNX...) if (stristr($HUA,"linux")) { $sistema="Linux"; } elseif (stristr($HUA,"freebsd")) { $sistema="FreeBSD"; } elseif (stristr($HUA,"openbsd")) { $sistema="OpenBSD"; } elseif (stristr($HUA,"netbsd")) { $sistema="NetBSD"; } elseif (stristr($HUA,"beos")) { $sistema="BeOS"; } elseif (stristr($HUA,"sunos") || stristr($HUA,"solaris")) { $sistema="Sun Solaris"; $K=strpos($HUA, "sunos"); $temp=substr($HUA,$K+6); $P=strpos($temp, chr(32)); $temp=substr($temp,0,$P); if ($temp=="sun4u;" || $temp=="sun4m;") { $temp=""; } $sistema.=" ".$temp; } elseif (stristr($HUA,"qnx") || stristr($HUA,"photon")) { $sistema="QNX"; } elseif (stristr($HUA,"hp-ux")) { $sistema="HP-UX"; } elseif (stristr($HUA,"irix")) { $sistema="SGI IRIX"; } elseif (stristr($HUA,"aix") || stristr($HUA,"ibm")) { $sistema="IBM AIX"; } elseif (stristr($HUA,"os/2") && stristr($HUA,"warp")) { $sistema="OS/2 Warp"; } elseif (stristr($HUA,"os/2")) { $sistema="OS/2"; } elseif (stristr($HUA,"HURD") || (stristr($HUA,"GNU") && stristr($HUA,"HURD"))) { $sistema="Unix (GNU Hurd)"; } //Para outros Unix elseif (stristr($HUA,"unix") || stristr($HUA,"x11")) { $sistema="Unix"; } //ÚLTIMOS DETALLES //Elimina los caracteres raros del final $version=str_replace(")","",$version); $version=str_replace(";)","",$version); $version=str_replace("+","",$version); $version=str_replace("c-sgi [","",$version); $version=str_replace("c-ja","",$version); $version=str_replace("c-cern","",$version); $version=str_replace("_strs","",$version); $version=str_replace(" [","",$version); //Cosas raras if($sistema==="Linux" && $navegador==="Internet Explorer") { $navegador="Mozilla"; $version="Descoñecida"; } //De non estar definidas las variables, se ponen como desconosidas if($sistema===false || $sistema==="") { $sistema=false; } if($version===false || $version==="") { $version=false; } if($navegador===false || $navegador==="") { $navegador=false; } //echo $navegador.' '; //echo $version.' '; //echo $sistema.' '; //************************** Termina Sniffer ******* ?>
__________________ gerardo |