G2A Many GEOs
SHARE
TWEET

http://blog.unijimpe.net/detectar-el-browser-con-php/

a guest Jun 23rd, 2010 216 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. /**
  4.  * Class to detect which browser is currently accessing the page/site
  5.  * @author Paul Scott
  6.  * This class is very loosely based on scripts by Gary White
  7.  * @copyright Paul Scott
  8.  * @package browser
  9.  */
  10.  
  11. class browser
  12. {
  13.         /**
  14.          * @var string $name
  15.          */
  16.         var $name = NULL;
  17.        
  18.         /**
  19.          * @var string $version
  20.          */
  21.         var $version = NULL;
  22.        
  23.         /**
  24.          * @var $useragent
  25.          */
  26.         var $useragent = NULL;
  27.        
  28.         /**
  29.          * @var string $platform
  30.          */
  31.         var $platform;
  32.        
  33.         /**
  34.          * @var string aol
  35.          */
  36.         var $aol = FALSE;
  37.        
  38.         /**
  39.          * @var string browser
  40.          */
  41.         var $browsertype;
  42.        
  43.         /**
  44.          * Class constructor
  45.          * @param void
  46.          * @return void
  47.          */
  48.         function browser()
  49.         {
  50.                 $agent = $_SERVER['HTTP_USER_AGENT'];
  51.                 //set the useragent property
  52.                 $this->useragent = $agent;
  53.         }
  54.        
  55.         /**
  56.          * Method to get the browser details from the USER_AGENT string in
  57.          * the PHP superglobals
  58.          * @param void
  59.          * @return string property platform
  60.          */
  61.         function getBrowserOS()
  62.         {
  63.                 $win = eregi("win", $this->useragent);
  64.                 $linux = eregi("linux", $this->useragent);
  65.                 $mac = eregi("mac", $this->useragent);
  66.                 $os2 = eregi("OS/2", $this->useragent);
  67.                 $beos = eregi("BeOS", $this->useragent);
  68.                
  69.                 //now do the check as to which matches and return it
  70.                 if($win)
  71.                 {
  72.                         $this->platform = "Windows";
  73.                 }
  74.                 elseif ($linux)
  75.                 {
  76.                         $this->platform = "Linux";
  77.                 }
  78.                 elseif ($mac)
  79.                 {
  80.                         $this->platform = "Macintosh";
  81.                 }
  82.                 elseif ($os2)
  83.                 {
  84.                         $this->platform = "OS/2";
  85.                 }
  86.                 elseif ($beos)
  87.                 {
  88.                         $this->platform = "BeOS";
  89.                 }
  90.                 return $this->platform;
  91.         }
  92.        
  93.         /**
  94.          * Method to test for Opera
  95.          * @param void
  96.          * @return property $broswer
  97.          * @return property version
  98.          * @return bool false on failure
  99.          */
  100.         function isOpera()
  101.         {
  102.                 // test for Opera              
  103.                 if (eregi("opera",$this->useragent))
  104.                 {
  105.                         $val = stristr($this->useragent, "opera");
  106.                         if (eregi("/", $val)){
  107.                                 $val = explode("/",$val);
  108.                                 $this->browsertype = $val[0];
  109.                                 $val = explode(" ",$val[1]);
  110.                                 $this->version = $val[0];
  111.                         }else{
  112.                                 $val = explode(" ",stristr($val,"opera"));
  113.                                 $this->browsertype = $val[0];
  114.                                 $this->version = $val[1];
  115.                         }
  116.                         return TRUE;
  117.                 }
  118.                 else {
  119.                         return FALSE;
  120.                 }
  121.         }
  122.        
  123.         /**
  124.          * Method to check for FireFox
  125.          * @param void
  126.          * @return bool false on failure
  127.          */
  128.         function isFirefox()
  129.         {
  130.                 if(eregi("Firefox", $this->useragent))
  131.                 {
  132.                         $this->browsertype = "Firefox";
  133.                         $val = stristr($this->useragent, "Firefox");
  134.                         $val = explode("/",$val);
  135.                         $this->version = $val[1];
  136.                         return true;
  137.                 }
  138.                 else {
  139.                         return FALSE;
  140.                 }
  141.         }
  142.        
  143.         /**
  144.          * Method to check for Konquerer
  145.          * @param void
  146.          * @return prop $browser
  147.          * @return prop $version
  148.          * @return bool true on success
  149.          */
  150.         function isKonqueror()
  151.         {
  152.                 if(eregi("Konqueror",$this->useragent))
  153.                 {
  154.                         $val = explode(" ",stristr($this->useragent,"Konqueror"));
  155.                         $val = explode("/",$val[0]);
  156.                         $this->browsertype = $val[0];
  157.                         $this->version = str_replace(")","",$val[1]);
  158.                         return TRUE;
  159.                 }
  160.                 else {
  161.                         return FALSE;
  162.                 }
  163.                
  164.         }//end func
  165.        
  166.         /**
  167.          * Method to check for Internet Explorer v1
  168.          * @param void
  169.          * @return bool true on success
  170.          * @return prop $browsertype
  171.          * @return prop $version
  172.          */
  173.         function isIEv1()
  174.         {
  175.                 if(eregi("microsoft internet explorer", $this->useragent))
  176.                 {
  177.                         $this->browsertype = "MSIE";
  178.                         $this->version = "1.0";
  179.                         $var = stristr($this->useragent, "/");
  180.                         if (ereg("308|425|426|474|0b1", $var))
  181.                         {
  182.                                 $this->version = "1.5";
  183.                         }
  184.                         return TRUE;
  185.                 }
  186.                 else {
  187.                         return FALSE;
  188.                 }
  189.         }//end function
  190.        
  191.         /**
  192.          * Method to check for Internet Explorer later than v1
  193.          * @param void
  194.          * @return bool true on success
  195.          * @return prop $browsertype
  196.          * @return prop $version
  197.          */
  198.         function isMSIE()
  199.         {
  200.                 if(eregi("msie", $this->useragent) && !eregi("opera",$this->useragent))
  201.                 {
  202.                         $this->browsertype = "MSIE";
  203.                         $val = explode(" ",stristr($this->useragent,"msie"));
  204.                         $this->browsertype = $val[0];
  205.                         $this->version = $val[1];
  206.                        
  207.                         return TRUE;
  208.                 }
  209.                 else {
  210.                         return FALSE;
  211.                 }
  212.         }//end function
  213.        
  214.         /**
  215.          * Method to check for Galeon
  216.          * @param void
  217.          * @return bool true on success
  218.          */
  219.         function isGaleon()
  220.         {
  221.                 if(eregi("galeon",$this->useragent))
  222.                 {
  223.                         $val = explode(" ",stristr($this->useragent,"galeon"));
  224.                         $val = explode("/",$val[0]);
  225.                         $this->browsertype = $val[0];
  226.                         $this->version = $val[1];
  227.                         return TRUE;
  228.                 }
  229.                 else {
  230.                         return FALSE;
  231.                 }
  232.         }//end func
  233.        
  234.         /**
  235.          * Now we do the tests for browsers I can't test...
  236.          * If someone finds a bug, please report it ASAP to me please!
  237.          */
  238.        
  239.         /**
  240.          * Method to check for WebTV browser
  241.          * @param void
  242.          * @return bool true on success
  243.          * @return prop $browsertype
  244.          * @return prop $version
  245.          */
  246.         function isWebTV()
  247.         {
  248.                 if(eregi("webtv",$this->useragent))
  249.                 {
  250.                         $val = explode("/",stristr($this->useragent,"webtv"));
  251.                         $this->browsertype = $val[0];
  252.                         $this->version = $val[1];
  253.                         return TRUE;
  254.                 }
  255.                 else {
  256.                         return FALSE;
  257.                 }
  258.         }
  259.        
  260.         /**
  261.          * Method to check for BeOS's NetPositive
  262.          * @param void
  263.          * @return bool true on success
  264.          * @return prop $browsertype
  265.          * @return prop $version
  266.          */
  267.         function isNetPositive()
  268.         {
  269.                 if(eregi("NetPositive", $this->useragent))
  270.                 {
  271.                         $val = explode("/",stristr($this->useragent,"NetPositive"));
  272.                         $this->platform = "BeOS";
  273.                         $this->browsertype = $val[0];
  274.                         $this->version = $val[1];
  275.                         return TRUE;
  276.                 }
  277.                 else {
  278.                         return FALSE;
  279.                 }
  280.         }
  281.        
  282.         /**
  283.          * Method to check for MSPIE (Pocket IE)
  284.          * @param void
  285.          * @return bool true on success
  286.          */
  287.         function isMSPIE()
  288.         {
  289.                 if(eregi("mspie",$this->useragent) || eregi("pocket", $this->useragent))
  290.                 {
  291.                         $val = explode(" ",stristr($this->useragent,"mspie"));
  292.                         $this->browsertype = "MSPIE";
  293.                         $this->platform = "WindowsCE";
  294.                         if (eregi("mspie", $this->useragent))
  295.                                 $this->version = $val[1];
  296.                         else {
  297.                                 $val = explode("/",$this->useragent);
  298.                                 $this->version = $val[1];
  299.                         }
  300.                         return TRUE;
  301.                 }
  302.                 else {
  303.                         return FALSE;
  304.                 }
  305.         }
  306.        
  307.         /**
  308.          * Method to test for iCab
  309.          * @param void
  310.          * @return bool true on success
  311.          */
  312.         function isIcab()
  313.         {
  314.                 if(eregi("icab",$this->useragent))
  315.                 {
  316.                         $val = explode(" ",stristr($this->useragent,"icab"));
  317.                         $this->browsertype = $val[0];
  318.                         $this->version = $val[1];
  319.                         return TRUE;
  320.                 }
  321.                 else {
  322.                         return FALSE;
  323.                 }
  324.         }
  325.        
  326.         /**
  327.          * Method to test for the OmniWeb Browser
  328.          * @param void
  329.          * @return bool True on success
  330.          */
  331.         function isOmniWeb()
  332.         {
  333.                 if(eregi("omniweb",$this->useragent))
  334.                 {
  335.                         $val = explode("/",stristr($this->useragent,"omniweb"));
  336.                         $this->browsertype = $val[0];
  337.                         $this->version = $val[1];
  338.                         return TRUE;
  339.                 }
  340.                 else {
  341.                         return FALSE;
  342.                 }
  343.         }
  344.        
  345.         /**
  346.          * Method to check for Phoenix Browser
  347.          * @param void
  348.          * @return bool true on success
  349.          */
  350.         function isPhoenix()
  351.         {
  352.                 if(eregi("Phoenix", $this->useragent))
  353.                 {
  354.                         $this->browsertype = "Phoenix";
  355.                         $val = explode("/", stristr($this->useragent,"Phoenix/"));
  356.                         $this->version = $val[1];
  357.                         return TRUE;
  358.                 }
  359.                 else {
  360.                         return FALSE;
  361.                 }
  362.         }
  363.        
  364.         /**
  365.          * Method to check for Firebird
  366.          * @param void
  367.          * @return bool true on success
  368.          */
  369.         function isFirebird()
  370.         {
  371.                 if(eregi("firebird", $this->useragent))
  372.                 {
  373.                         $this->browsertype = "Firebird";
  374.                         $val = stristr($this->useragent, "Firebird");
  375.                         $val = explode("/",$val);
  376.                         $this->version = $val[1];
  377.                         return TRUE;
  378.                 }
  379.                 else {
  380.                         return FALSE;
  381.                 }
  382.         }
  383.        
  384.         /**
  385.          * Method to check for Mozilla alpha/beta
  386.          * @param void
  387.          * @return bool true on success
  388.          */
  389.         function isMozAlphaBeta()
  390.         {
  391.                 if(eregi("mozilla",$this->useragent) &&
  392.                    eregi("rv:[0-9].[0-9][a-b]",$this->useragent) &&
  393.                    !eregi("netscape",$this->useragent))
  394.                
  395.                 {
  396.                         $this->browsertype = "Mozilla";
  397.                         $val = explode(" ",stristr($this->useragent,"rv:"));
  398.                         eregi("rv:[0-9].[0-9][a-b]",$this->useragent,$val);
  399.                         $this->version = str_replace("rv:","",$val[0]);
  400.                         return TRUE;
  401.                 }
  402.                 else {
  403.                         return FALSE;
  404.                 }
  405.         }//end function
  406.  
  407.         /**
  408.          * Method to check for Mozilla Stable versions
  409.          * @param void
  410.          * @return bool true on success
  411.          */
  412.         function isMozStable()
  413.         {
  414.                 if(eregi("mozilla",$this->useragent) &&
  415.                    eregi("rv:[0-9]\.[0-9]",$this->useragent) &&
  416.                    !eregi("netscape",$this->useragent))
  417.                 {
  418.                         $this->browsertype = "Mozilla";
  419.                         $val = explode(" ",stristr($this->useragent,"rv:"));
  420.                         eregi("rv:[0-9]\.[0-9]\.[0-9]",$this->useragent,$val);
  421.                         $this->version = str_replace("rv:","",$val[0]);
  422.                         return TRUE;
  423.                 }
  424.                 else {
  425.                         return FALSE;
  426.                 }
  427.         }
  428.        
  429.         /**
  430.          * Method to check for Lynx and Amaya
  431.          * @param void
  432.          * @return bool true on success
  433.          */
  434.         function isLynx()
  435.         {
  436.                 if(eregi("libwww", $this->useragent))
  437.                 {
  438.                         if (eregi("amaya", $this->useragent))
  439.                         {
  440.                                 $val = explode("/",stristr($this->useragent,"amaya"));
  441.                                 $this->browsertype = "Amaya";
  442.                                 $val = explode(" ", $val[1]);
  443.                                 $this->version = $val[0];
  444.                         } else {
  445.                                 $val = explode("/",$this->useragent);
  446.                                 $this->browsertype = "Lynx";
  447.                                 $this->version = $val[1];
  448.                         }
  449.                         return TRUE;
  450.                 }
  451.                 else {
  452.                         return FALSE;
  453.                 }
  454.         }
  455.        
  456.         /**
  457.          * method to check for safari browser
  458.          * @param void
  459.          * @return bool true on success
  460.          */
  461.         function isSafari()
  462.         {
  463.                 if(eregi("safari", $this->useragent))
  464.                 {
  465.                         $this->browsertype = "Safari";
  466.                         $this->version = "";
  467.                         return TRUE;
  468.                 }
  469.                 else {
  470.                         return FALSE;
  471.                 }
  472.         }
  473.        
  474.         /**
  475.          * Various tests for Netscrape
  476.          * @param void
  477.          * @return bool true on success
  478.          */
  479.         function isNetscape()
  480.         {
  481.                 if(eregi("netscape",$this->useragent))
  482.                 {
  483.                         $val = explode(" ",stristr($this->useragent,"netscape"));
  484.                         $val = explode("/",$val[0]);
  485.                         $this->browsertype = $val[0];
  486.                         $this->version = $val[1];
  487.                         return TRUE;
  488.                 }
  489.                 elseif(eregi("mozilla",$this->useragent) &&
  490.                                 !eregi("rv:[0-9]\.[0-9]\.[0-9]",$this->useragent))
  491.                 {
  492.                         $val = explode(" ",stristr($this->useragent,"mozilla"));
  493.                         $val = explode("/",$val[0]);
  494.                         $this->browsertype = "Netscape";
  495.                         $this->version = $val[1];
  496.                         return TRUE;
  497.                 }
  498.                 else {
  499.                         return FALSE;
  500.                 }
  501.         }//end func
  502.        
  503.         /**
  504.          * Method to check for AOL connections
  505.          * @param void
  506.          * @return bool true on Success
  507.          */
  508.         function isAOL()
  509.         {
  510.                 if (eregi("AOL", $this->useragent)){
  511.                         $var = stristr($this->useragent, "AOL");
  512.                         $var = explode(" ", $var);
  513.                         $this->aol = ereg_replace("[^0-9,.,a-z,A-Z]", "", $var[1]);
  514.                         return TRUE;
  515.                 }
  516.                 else {
  517.                         return FALSE;
  518.                 }
  519.         }
  520.        
  521.         /* Soporte Chrome por Charles */
  522.         function isChrome()
  523.         {
  524.         if(eregi("chrome", $this->useragent))
  525.         {
  526.         $this->browsertype = "Chrome";
  527.         $val = stristr($this->useragent, "Chrome");
  528.         $val = explode("/",$val);
  529.         $val = explode(" ",$val[1]);
  530.         $this->version = $val[0];
  531.         return true;
  532.         }
  533.         else {
  534.         return FALSE;
  535.         }
  536.         }
  537.        
  538.         /**
  539.          * Method to tie them all up and output something useful
  540.          * @param void
  541.          * @return array
  542.          */
  543.         function whatBrowser()
  544.         {
  545.                 $this->getBrowserOS();
  546.                 $this->isOpera();
  547.                 $this->isFirefox();
  548.                 $this->isKonqueror();
  549.                 $this->isIEv1();
  550.                 $this->isMSIE();
  551.                 $this->isGaleon();
  552.                 $this->isNetPositive();
  553.                 $this->isMSPIE();
  554.                 $this->isIcab();
  555.                 $this->isOmniWeb();
  556.                 $this->isPhoenix();
  557.                 $this->isFirebird();
  558.                 $this->isLynx();
  559.                 $this->isSafari();
  560.                 //$this->isMozAlphaBeta();
  561.                 //$this->isMozStable();
  562.                 //$this->isNetscape();
  563.                 $this->isAOL();
  564.                 $this->isChrome();
  565.                 return array('browsertype' => $this->browsertype,
  566.                                          'version' => $this->version,
  567.                                          'platform' => $this->platform,
  568.                                          'AOL' => $this->aol);
  569.         }
  570. }//end class
  571. ?>
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top