Accorciare Stringa HTTP_USER_AGENT

max_400

Utente Attivo
23 Gen 2009
770
0
16
caltanissetta
max400.forumfree.it
Cari Sorcetti e cari Felini.
Ho l'esigenza di accorciare quel comando per visualizzare le informazioni che
riguardano il visitatore che guarda una mia pagina quindi oltre all'ip ho aggiunto
le informazioni che riguardano il Sistema Operativo, il Browser, il Linguaggio in uso.
il tutto si racchiude in quel comando:

PHP:
$stringa=$_SERVER['HTTP_USER_AGENT'];

Dopo un paio di scarabocchi, mi sono reso conto che è necessario avere
almeno 3 gruppi di array.
Il primo contiene i vari sistemi Operativi: Windows NT, Windows 7, Windows 2000 ecc..
Il secondo i vari Browser (so che sono tanti ma basta mettere i più diffusi: Firefox, Explorer, Opera Crhome,ecc
Il terzo il linguaggio in uso: it, US ecc...

avevo fatto un piccolo script è lo testato con 2 browser però è solo uno scarabocchio
il risultato finale tenendo conto del mio sistema operativo

37.193.161.54 - Windows NT - Firefox/3.6.28 - it;

in un altro computer potrei avere invece
87.293.151.54 - Windows 7 - K-Meleon - US;

Se qualkuno di voi è in grado di creare uno script completo e ovviamente sintetico.
penso sia utile un po per tutti.
Lo scopo rendere più veloce e leggibile la lettura e le informazioni sul visitatore.
Anzicchè una stringa di questo tipo eccessuivamente lunga
ip: 37.193.161.54 - Sistema operativo e browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.2.28) Gecko/20120306 Firefox/3.6.28

Ps questo è lo scarabocchio utilizzando strstr e substr quello che avevo realizzato io penso che sia necessario utilizzare degli array cioè degli elenchi dei vari browser e poi eseguire il confronto... giusto?

PHP:
<?php
$ip=$_SERVER['REMOTE_ADDR'];
$stringa=$_SERVER['HTTP_USER_AGENT'];

$sistema1=strstr($stringa, 'Windows NT');
$sistema1filtro=substr($sistema1,0,10);

$sistema2=strstr($stringa, 'Windows 7');
$sistema2filtro=substr($sistema2,0,10);

$browser1=strstr($stringa, 'Firefox');
$browser2=strstr($stringa, 'K-Meleon');

$linguaggio=strstr($stringa, 'it');
$linguaggiofiltro=substr($linguaggio,0,3);

echo $stringa."<br>";
echo $ip." - ".$sistema1filtro.$sistema2filtro." - ".$browser1.$browser2." - ".$linguaggiofiltro;
?>

A voi le carte!
Grazie!
 
Ciao Max
per il sistema operativo
PHP:
<?php

function SistemaOperativo($agent) {
    $so = array(
        'Windows NT 6.2' => 'Win 8',
        'Windows NT 6.1' => 'Win 7',
        'Windows NT 6.0' => 'Win vista',
        'Windows NT 5.1' => 'Win XP',
        'Windows NT 5.0' => 'Win 2000',
        'Windows NT 4.90' => 'Win ME',
        'Win95' => 'Win 95',
        'Win98' => 'Win 98',
        'Mac|PPC' => 'Mac',
        'Linux' => 'Linux'
    );

    foreach ($so as $chiave => $valore) {
        if (strstr($agent, $chiave)) {
            return $valore;
        }
    }
    return 'S.O. non riconosciuto';
}

$sistemaOperativo = SistemaOperativo($_SERVER['HTTP_USER_AGENT']);

echo $sistemaOperativo;
?>
nell'array puoi aggiungere tutti i sistemi che conosci
puoi farti una funzione simile per i browser

Se usi questo sistema ricorda di mettere le versioni dello stesso sitema/browser in ordine decrescente
 

Discussioni simili