admin Founder


Registrato: Oct 03, 2008 Messaggi: 261
|
Inviato: Mar Gen 06, 2009 1:14 am Oggetto: Guida PHP: Individuare il sistema operativo |
|
|
INDIVIDUARE IL SISTEMA OPERATIVO DELL' UTENTE
by Michele Cotrufo [email protected]
Ogni qualvolta un utente visita una pagina del vostro sito, egli invia una richiesta in formato HTTP al server sul quale risiede il vostro sito. In questa stringa, oltre a trovarsi il nome della pagina richiesta dall'utente, ci sono molte informazioni sul computer di questi, come sistema operativo e browser utilizzato. Analizzando questa stringa, quindi, si è in grado di stabilire l'os dell'utente.
Ecco un esempio di richiesta HTTP:
| Codice: | | GET /sito/index.php HTTP/1.1" 200 4615 "http://localhost/sito/index.php" "Mozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.7.8) Gecko/20050511 Firefox/1.0.4" |
Tra le varie informazioni contenute, quella che ci interessa è:
Mozilla/5.0 (Windows; U; Windows NT 5.1; it-IT; rv:1.7. Gecko/20050511 Firefox/1.0.4
Qui sono contenute informazioni sull'OS e il browser dell'utente.
Da una prima lettura balza subito all'occhio Firefox/1.0.4, che ci indica che il browser dell'utente è Firefox. Inoltre si nota la stringa Windows NT 5.1. Per chi non lo sapesse, Windows NT 5.1 è un "altro nome" di Windows XP. Abbamo dunque stabilito che questo utente Usa Windows XP. Ora è necessario creare una funzione che analizzi le stringhe e stabilisca automaticamente il sistema operativo dell'utente.
Girando nella rete, ho trovato la seguente tabella di riferimenti, che indica per ogni sistema operativo, che stringa c'è nella richiesta dell'utente:
SISTEMA OPERATIVO STRINGA NELLA RICHIESTA HTTP
| Codice: |
Windows (generico) Win
Windows XP Windows NT 5.1
Windows 2000 Windows NT 5.0
Windows ME Windows NT 4.90
Windows 95 Win95
Windows 98 Win98
Windows Net Windows NT 5.2
Windows NT WinNT4.0
Mac Mac oppure PPC
Linux Linux
FreeBSD FreeBSD
SunOS SunOS
Irix Irix
BeOS BeOS
OS/2 OS/2
AIX AIX |
Naturalmente nulla vi vieta di cercare le stringhe relative agli altri sistemi operativi!
La stringa che dovremo esaminare è contenuta nell indice HTTP_USER_AGENT di $_SERVER, perciò potremo ottenerla in qualsiasi momento usando $_SERVER['HTTP_USER_AGENT']
Ecco quindi come potrebbe essere strutturata la funzione, di seguito la commenterò:
| Codice: |
function GetSistemaOperativo(){
$os = array("Windows XP" => "Windows NT 5.1",
"Windows 2000" => "Windows NT 5.0",
"Windows ME" => "Windows NT 4.90",
"Windows 95" => "Win95",
"Windows 98" => "Win98",
"Windows NET" => "Windows NT 5.2",
"Windows NT" => "WinNT4.0",
"Mac" => "Mac|PPC",
"Linux" => "Linux",
"FreeBSD" => "FreeBSD",
"SunOS" => "SunOS",
"Irix" => "Irix",
"BeOS" => "BeOS",
"OS/2" => "OS/2",
"AIX" => "AIX",
)
foreach($os as $chiave => $valore){
if(eregi($valore, $_SERVER["HTTP_USER_AGENT"])){
return $chiave;
}
}
return "Altro";
} |
Prima di tutto memorizziamo in un array i sistemi operativi. Ogni chiave è un sistema operativo e il valore relativo rappresenta la stringa che deve essere presente nella richiesta HTTP. Noterete che l'indice "Mac" presenta il valore "Mac|PPC", questo perchè il sistema operativo saràMac sia se c'è la stringa Mac, sia se c'è la stringa PPC, e il carattere | rappresenta l'OR nelle espressioni regolari, quindi riconosceràl'os sia se c'è 'Mac', sia se c'è 'PPC'.
Se volete aggiungere altri Os, basta che seguite la stessa sintassi che ho seguito io.
Dopo aver costruito l'array, questo viene analizzato con l'istruzione Foreach. Per ogni elemento, viene controllato se il valore è presente in $_SERVER["HTTP_USER_AGENT"]. In caso positivo ritorneràl'indice di quell'elemento.
Se non viene trovato nessun valore corrispondente, il ciclo foreach finisce, e la funzione ritorna la stringa "Altro", perchè non è stato identificato nessun sistema operativo.
Fonte: PieroTofy.it _________________ D3vil-C0de Crew => http://d3vilc0de.org
My Spaces => http://kinginfet.135.it
My Tool Cracker => http://totalcracker.135.it
My Dj Site => http://djkinginfet.135.it |
|