PDA

View Full Version : PHP SERVER["HTTP_USER_AGENT"]


Pro7on
18-01-2007, 09:01
ciao chi mi sa dire che stringhe restituisce la funzioone SERVER["HTTP_USER_AGENT"] per tutti i browser..

xche nn riesco a treovare un sito che me lo dica :( :help:

andbin
18-01-2007, 10:04
ciao chi mi sa dire che stringhe restituisce la funzioone SERVER["HTTP_USER_AGENT"] per tutti i browser..

xche nn riesco a treovare un sito che me lo dica :( :help:Prima di tutto non è una funzione .... è una variabile super-global.

C'è questo sito che avevo trovato una volta: http://www.psychedelix.com/agents.html
Però non so dirti quanto sia valido e aggiornato o meno. Vedi anche, eventualmente: http://en.wikipedia.org/wiki/User_agent

Tieni presente che non si tratta di una semplice stringa di cui tu puoi fare una comparazione per intero con certe stringhe conosciute!!

Ti faccio un esempio: per Firefox la stringa di user-agent è una cosa tipo questa:
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

C'è quindi da analizzare solamente delle parti della stringa. Infatti il sistema operativo può variare (Windows NT 5.0 indica Win2000), la lingua può cambiare invece di essere en-US, la versione di Gecko può variare, e anche la versione di Firefox cambia, ovviamente.

Per stabilire se è Firefox, ad esempio devi cercare la stringa "Firefox/" Una volta che l'hai trovata sai che è Firefox e devi leggere la parte dopo il / per determinare la versione.

Mentre con IE la stringa è una cosa del tipo:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

In questo caso devi cercare la stringa "MSIE "

Insomma ... spero che ti sia chiaro che c'è da fare un po' di analisi sulla stringa! ;)

Pro7on
18-01-2007, 10:10
Prima di tutto non è una funzione .... è una variabile super-global.

C'è questo sito che avevo trovato una volta: http://www.psychedelix.com/agents.html
Però non so dirti quanto sia valido e aggiornato o meno. Vedi anche, eventualmente: http://en.wikipedia.org/wiki/User_agent

Tieni presente che non si tratta di una semplice stringa di cui tu puoi fare una comparazione per intero con certe stringhe conosciute!!

Ti faccio un esempio: per Firefox la stringa di user-agent è una cosa tipo questa:
Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

C'è quindi da analizzare solamente delle parti della stringa. Infatti il sistema operativo può variare (Windows NT 5.0 indica Win2000), la lingua può cambiare invece di essere en-US, la versione di Gecko può variare, e anche la versione di Firefox cambia, ovviamente.

Per stabilire se è Firefox, ad esempio devi cercare la stringa "Firefox/" Una volta che l'hai trovata sai che è Firefox e devi leggere la parte dopo il / per determinare la versione.

Mentre con IE la stringa è una cosa del tipo:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727)

In questo caso devi cercare la stringa "MSIE "

Insomma ... spero che ti sia chiaro che c'è da fare un po' di analisi sulla stringa! ;)

no ma tipo se ho firefox esce Firefox se uso ie esce ..... se uso safari esce ...? mozilla esce Moziila e viadicendo

andbin
18-01-2007, 10:40
no ma tipo se ho firefox esce Firefox se uso ie esce ..... se uso safari esce ...? mozilla esce Moziila e viadicendoAllora ... per avere le informazioni chiare e precise (per fare magari dei test) devi o analizzare tu la stringa oppure appoggiarti a qualche libreria dedicata al riconoscimento dello user-agent (e ce ne sono sicuramente in giro). Io in passato mi ero fatto una classe PHP che faceva proprio questo, analizzava la stringa e poi potevo fare dei test del tipo if ($ua->isInternetExplorer ()) ... (adesso non mi ricordo bene ... non l'ho mai più aggiornata/usata ... dovrei sistemarla!)

Se vuoi fare un banale test puoi fare:
$useragent = strtolower ($_SERVER['HTTP_USER_AGENT']);

if (strpos ($useragent, "firefox/") !== FALSE)
{
echo "Sono Firefox";
}
elseif (strpos ($useragent, "opera/") !== FALSE)
{
echo "Sono Opera";
}
elseif (strpos ($useragent, "msie ") !== FALSE)
{
echo "Sono Internet Explorer";
}
elseif (strpos ($useragent, "mozilla/") !== FALSE &&
strpos ($useragent, "rv:") !== FALSE)
{
echo "Sono Mozilla";
}