Ik zit al een tijdje met het volgende probleem. Ik heb een statistiekenteller gebouwd waarbij ik met behulp van de http_user_agent het platform van de gebruiker vastleg. Dit doe ik met de volgende (gedeeltelijke) code:
In het geval van IE die de volgende http_user_agent geeft:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
gaat dit goed omdat er maar 1 windows in de http_user_agent staat.
Probleem is nu dat firefox de volgende http_user_agent geeft:
Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1
2x windows dus...
Met het bovenstaande script wordt dan "Windows" uitgespuugd i.p.v. "Windows NT 5.1" omdat hij na de eerste windows stopt. Heeft iemand een idee hoe ik ervoor kan zorgen dat het script "windows" negeert en dan dus verder gaat naar "windows nt 5.1"?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| <? function getOS($useragent) { if (eregi("(win|windows)[ ]*((nt)*[ /]*([0-9]+(\.?[0-9]+))*)", $useragent, $regs)) { if (strcasecmp($regs[2], "NT 5.0") == 0) { $regs[2] = "2000"; } elseif (strcasecmp($regs[2], "CE") == 0) { $regs[2] = "CE"; } elseif (strcasecmp($regs[2], "NT 5.2") == 0) { $regs[2] = "2003"; } elseif (strcasecmp($regs[2], "NT 5.1") == 0) { $regs[2] = "XP"; } $os = "Windows $regs[2]"; } elseif (stristr($useragent, "Linux")) $os = "Linux"; elseif (stristr($useragent, "Unix")) $os = "Unix"; elseif (stristr($useragent, "GNU")) $os = "GNU"; elseif (stristr($useragent, "BSD")) $os = "BSD"; elseif (stristr($useragent, "Mac")) $os = "MacOS"; else $os = "Unknown"; return $os; } ?> |
In het geval van IE die de volgende http_user_agent geeft:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
gaat dit goed omdat er maar 1 windows in de http_user_agent staat.
Probleem is nu dat firefox de volgende http_user_agent geeft:
Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1
2x windows dus...
Met het bovenstaande script wordt dan "Windows" uitgespuugd i.p.v. "Windows NT 5.1" omdat hij na de eerste windows stopt. Heeft iemand een idee hoe ik ervoor kan zorgen dat het script "windows" negeert en dan dus verder gaat naar "windows nt 5.1"?
[ Voor 9% gewijzigd door Verwijderd op 17-11-2004 16:48 ]