Hola , esta noche me encontre con la necesidad de detectar el navegador y su version con php, y me puse en la tarea de buscarla por internet, no habia una que me convenciera asi que saque trozos de codigos y los fui adaptando lo probe en todos los navegadores y en todas sus versiones, funciona correctamente, no tengo ni idea si en mac o masitosh funciona no tengo esos sistemas xD, le agregaria android y todo lo demás ... pero no tengo smartphone como para probarlo :p
Código PHP:
Ver original# Browser
class Browser{
# Forma de uso
# $Nav = new Browser;
# $Nav->Iniciar(); # Inicia el constructor
# $Nav->Navegador; # Devuelve el navegador [String]
# $Nav->Version; # Devuelve la version [Int:Entero]
# $Nav->Sistemao; # Devuelve el Sistema Operativo [String]
# Variables
public $User_Agent = NULL;
public $Navegador = NULL;
public $Version = NULL;
public $SistemaO = NULL;
# Constructor
public function Iniciar(){
# Constructor
$this->User_Agent = $_SERVER['HTTP_USER_AGENT'];
# Funciones
$this->Navegador();
$this->Version();
$this->SO();
}
# Detectar
private function Navegador(){
if(preg_match('/MSIE/i',$this->User_Agent)) $this->Navegador = "MSIE"; if(preg_match('/Opera/i',$this->User_Agent)) $this->Navegador = 'Opera'; if(preg_match('/Firefox/i',$this->User_Agent)) $this->Navegador = 'Firefox'; if(preg_match('/Safari/i',$this->User_Agent)) $this->Navegador = 'Safari'; if(preg_match('/Chrome/i',$this->User_Agent)) $this->Navegador = 'Chrome';
}
# Version
private function Version(){
$this->Version = floor($match[2]);
if($this->Navegador=='Opera' || $this->Navegador=='Safari' && preg_match("#(version)[/ ]?([0-9.]*)#", strtolower($this->User_Agent), $match)) $this->Version = floor($match[2]);
}
# Sistema Operativo
private function SO(){
if(preg_match("/win/i", $this->User_Agent)) $this->SistemaO = 'Windows'; if(preg_match("/linux/i", $this->User_Agent)) $this->SistemaO = 'Linux'; if(preg_match("/mac/i", $this->User_Agent)) $this->SistemaO = 'Macintosh';
}
}