Foros del Web » Programando para Internet » PHP »

Como detectar el sistema operativo??

Estas en el tema de Como detectar el sistema operativo?? en el foro de PHP en Foros del Web. Saludos. Bueno, ando con una duda que tengo desde hace tiempo, quiero crear una pagina, en la pagina hay ciertos elementos que quiero mostrar determinadamente ...
  #1 (permalink)  
Antiguo 29/06/2010, 23:46
 
Fecha de Ingreso: julio-2009
Mensajes: 55
Antigüedad: 14 años, 9 meses
Puntos: 0
Como detectar el sistema operativo??

Saludos.
Bueno, ando con una duda que tengo desde hace tiempo, quiero crear una pagina, en la pagina hay ciertos elementos que quiero mostrar determinadamente al usuario, dependiendo de su sistema operativo.

Navegando por la web,me encontre con un script , que el autor llama Agenteweb
Código:
<?php


error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);





class AgenteWeb{



  private $SO        = "";
  private $navegador = "";
  private $agente    = "";


public  function reconocedorSistemaOperativo($Agente){
	if      (ereg("Windows NT 5.1",  $Agente)) $sistemaOperativo = "Windows XP";
	elseif  (ereg("Windows NT 5.0",  $Agente)) $sistemaOperativo = "Windows 2000";
	elseif  (ereg("Win98     ",      $Agente)) $sistemaOperativo = "Windows 98";
	elseif  (ereg("Win",             $Agente)) $sistemaOperativo = "Windows ??";
	elseif  ( (ereg("Mac",           $Agente)) || (ereg("PPC", $Agente))) $sistemaOperativo = "Macintosh";
	elseif  (ereg("Debian",          $Agente)) $sistemaOperativo = "Debian";
	elseif  (ereg("Linux",           $Agente)) $sistemaOperativo = "Linux";
	elseif  (ereg("FreeBSD",         $Agente)) $sistemaOperativo = "FreeBSD";
	elseif  (ereg("SunOS",           $Agente)) $sistemaOperativo = "SunOS";
	elseif  (ereg("IRIX",            $Agente)) $sistemaOperativo = "IRIX";
	elseif  (ereg("BeOS",            $Agente)) $sistemaOperativo = "BeOS";
	elseif  (ereg("OS/2",            $Agente)) $sistemaOperativo = "OS/2";
	elseif  (ereg("AIX",             $Agente)) $sistemaOperativo = "AIX";
	else   $sistemaOperativo = "Desconocido";

	return $sistemaOperativo;
}




public  function reconocedorNavegador($agente){
//primero tenemos k conocer si se trata de opera!!! ya k el identificador se puede trucar...(OPERA CAN BE spoofed as MSIE 6)
// si no te lo crees miralo pone MSIE BLABLA Opera ...
	if    (eregi("Opera( )*(/){0,1}([0-9]+)(\.([0-9])+)*",            $agente,$browser)); // son validos Opera/7.54 Opera/8 Opera/7.23 Opera 6.2
	elseif(eregi("Netscape([0-9]*)( )*(/){0,1}([0-9]+)(\.([0-9])+)*", $agente,$browser)); //son validos Netscape/7.02  Netscape6/6.2.1
	elseif(eregi("MSIE ([0-9]+)(\.([0-9])+)*",                        $agente,$browser)); //son validos MSIE 6.0 MSIE 5.0  MSIE 5.5
	elseif(eregi("Lynx",                                              $agente,$browser));
	elseif(eregi("WebTV",                                             $agente,$browser));
	elseif(eregi("Galeon/([0-9]+)(\.([0-9])+)*",                      $agente,$browser)); //Galeon/2.2.2
	elseif(eregi("Konqueror/([0-9]+)(\.([0-9])+)*",                   $agente,$browser)); //konqueror/2.2.2 konqueror/3.1
	elseif(eregi("Firefox( )*(/){0,1}([0-9]+)(\.([0-9])+)*",          $agente,$browser)); //Firefox/0.9 Firefox/0.10.1
    elseif(eregi("Iceweasel( )*(/){0,1}([0-9]+)(\.([0-9])+)*",        $agente,$browser)); //IceWeasel/0.9 Firefox/0.10.1
	elseif(eregi("Firebird( )*(/){0,1}([0-9]+)(\.([0-9])+)*",         $agente,$browser)); //Firebird/0.7 Firebird/0.10.1
	elseif(eregi("Safari",                                            $agente,$browser)); //Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/125.4 (KHTML, like Gecko) Safari/125.9
	elseif ((eregi("Gecko",  $agente))
      	||(eregi("X11",    $agente))
      	||(eregi("Mozilla",$agente))
      	||(eregi("U",      $agente)))                               $nombre[0] = "Mozilla";
	elseif(eregi("WAP",                                               $agente,$browser));
	else $nombre[0]="Otro";

      eregi("([a-z]+)",                         $browser[0],$nombre); //conseguimos el nombre
      eregi("([0-9]+)(\.([0-9])+)*",            $browser[0],$version); //conseguimos la version
   $navegador="${nombre[0]} ${version[0]}"; //separamos el nombre y la version por un espacio

return $navegador;
}



public function reconocerRobot($agente){
	if     (ereg("Google",  $agente)) $robot = "Google"; //Googlebot/2.1 (+http://www.google.com/bot.html)
	elseif (ereg("Yahoo",   $agente)) $robot = "Yahoo"; //Mozilla/5.0 (compatible; Yahoo! Slurp; http://www.webmasterworld.com/red.cgi?f=21&d=8530&url=http://help.yahoo.com/help/us/ysearch/slurp)
	elseif (ereg("msnbot",  $agente)) $robot = "MSN"; //msnbot/0.11 (+http://search.msn.com/msnbot.htm)
	elseif (ereg("Scooter", $agente)) $robot = "Bot"; // ? no se k robot es
	elseif (ereg("Spider",  $agente)) $robot = "Bot"; // ? no se k robot es
	elseif (ereg("Infoseek",$agente)) $robot = "Bot"; // ? no se k robot es
	elseif (ereg("Slurp",   $agente)) $robot = "Bot"; // ? no se k robot es
	elseif (ereg("bot",     $agente)) $robot = "Bot"; // ? no se k robot es
	else  $robot="Otro";

return $robot;
}



    public function getSO(){
         return   $this->SO;
    }
    public function getNavegador(){
         return   $this->navegador;
    }
    public function getAgente(){
         return   $this->agente;
    }
    public function setAgente($agente){
            $this->agente=$agente;
    }
    public function setSO($SO){
            $this->SO=$SO;
    }
    public function setNavegador($navegador){
            $this->navegador=$navegador;
    }


	 public function parseaAgente(){

		$this->SO       = $this->reconocedorSistemaOperativo ($this->agente);
		$this->navegador= $this->reconocedorNavegador($this->agente);

	}








/*
 * Recupera el nombre de la imagen correspondiente al navegador
*/
  public function getImagenSrcNavegador(){

  	 $img="question.gif";
  	 eregi("([a-z]+)",  $this->navegador,$nombre); //conseguimos el nombre
 	 switch ($nombre[0]) {
          case "Netscape"  :$img='netscape.gif';  break;
          case "Galeon"    :$img='galeon.gif';    break;
          case "Firefox"   :$img='firefox.gif';   break;
          case "Firebird"  :$img='firebird.gif';  break;
          case "Iceweasel" :$img='iceweasel.gif'; break;
          case "Mozilla"   :$img='mozilla.gif';   break;
          case "MSIE"      :$img='explorer.gif';  break;
          case "Konqueror" :$img='konqueror.gif'; break;
          case "Opera"     :$img='opera.gif';     break;
          case "Lynx"      :$img='lynx.gif';      break;
          case "Bot"       :$img='altavista.gif'; break;
          case "WAP"       :$img='pdaphone.gif';  break;
          case "Otro"      :$img='question.gif';  break;
	}
	return $img;

}

/*
 * Recupera el nombre de la imagen correspondiente al sistema operativo
*/
  public function getImagenSrcSO(){
	 $img ="question.gif";

    switch ($this->SO ) {
          case "Windows ??"   :$img='windows.gif';      break;
   		  case "Windows XP"   :$img='windowsXP.gif';    break;
      	  case "Windows 2000" :$img='windows2000.gif';  break;
          case "Windows 98"   :$img='windows98.gif';    break;
          case "Macintosh"    :$img='mac.gif';      break;
          case "Linux"        :$img='linux.gif';    break;
          case "Debian"       :$img='debian.jpg';   break;
          case "FreeBSD"      :$img='bsd.gif';      break;
          case "SunOS"        :$img='sun.gif';      break;
          case "IRIX"         :$img='irix.gif';     break;
          case "BeOS"         :$img='be.gif';       break;
          case "OS/2"         :$img='os2.gif';      break;
          case "AIX"          :$img='aix.gif';      break;
          case "Desconocido"  :$img='question.gif'; break;
    }
    return  $img;


}













public function __destruct(){

}




}


?>
Dentro del cuerpo de mi pagina, yo puse los datos correspondientes para hacer el llamado ( el codigo anterior se guarda en Agenteweb.php)

El codigo quedaria algo asi:
Código:
<?php
require "AgenteWeb.php"; 
 $agenteWeb = new AgenteWeb(); 
 $agenteWeb->setAgente($_SERVER['HTTP_USER_AGENT']); 
 $agenteWeb->parseaAgente(); 
 $so             = $agenteWeb->getSO(); 

if ($so = "Windows NT 5.1" ){ ?>
<div id="prueba">windows</div>
<?
} elseif($so = "Linux") { ?>
<div id="prueba">linux</div>
<? } else { ?>
S
<?
}
?>
Pero simplemente no me vota lo correspondiente, solo el primero, en este caso windows, siendo que yo uso Linux.
El codigo lo compare con el texto correspondiente la variable $so, no se si sea asi, o que es lo que me falla.

¿Alguien sabe como arreglarlo?
  #2 (permalink)  
Antiguo 30/06/2010, 02:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Como detectar el sistema operativo??

te recuerdo que las comparaciones necesitan dos == y tu estas usando uno solo en tus comparaciones, y eso es una asignación...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: detectar, operativo, sitemap
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:03.