login  Naam:   Wachtwoord: 
Registreer je!
 Forum

probleem met statistieken script d.m.v preg_match()

Offline Rien91 - 24/03/2006 16:33 (laatste wijziging 24/03/2006 16:36)
Avatar van Rien91HTML interesse Toen ik mijn site aan het controleren was met netscape 8.1 (in display like internet explorer modus) en ik mijn statistieken script aan het nakijken was zag ik dat ik dat er 1 os was gedetecteerd en 3 browsers: Internet Explorer, Netscape en een "unknown browser" wat dus eigenlijk niet kan. ( in totaal 1 bezoeker, 1 os en 3 browsers). Dit gebeurt alleen maar als er iemand met Netscape in msie modus mijn site bezoekt. Heeft iemand hier een oplossing voor? Ik gebruik een zelf geupdate versie van "brain benzinger's urstat" te vinden op www.venturenine.com. Deze werkt met de functie preg_match().
Hier volgt de code die ik gebruik:

  1. <?php
  2. if ($a == "browser") {
  3. $ie = "0"; $ff = "0";
  4. $op = "0"; $ne = "0";
  5. $win = "0"; $linux = "0";
  6. $unix = "0"; $mac = "0";
  7. $konq = "0"; $saf = "0";
  8. $title = "<b>OS & Browser Stats</b>";
  9. $file=file("$datafile");
  10. $total_hits = sizeof($file);
  11. while(list(,$value)=each($file)){
  12. list($date, $year, $month, $day, $hour, $week, $ip, $from, $location, $agent, $hostmask, $unique)=split( "\|", $value);
  13. if(preg_match("/MSIE/i",$agent)){ $ie++; } if(preg_match("/Netscape/i",$agent)){ $ne++; }
  14. if(preg_match("/Firefox/i",$agent)){ $ff++; } if(preg_match("/Opera/i",$agent)){ $op++; }
  15. $unk = ($ie + $ne + $ff + $op + $konq + $saf) - $total_hits;
  16. $iebw = $ie / $total_hits * 100;
  17. $ffbw = $ff / $total_hits * 100;
  18. $nebw = $ne / $total_hits * 100;
  19. $opbw = $op / $total_hits * 100;
  20. $konqbw = $konq / $total_hits * 100;
  21. $safbw = $saf / $total_hits * 100;
  22. $unkbw = $unk / $total_hits * 100;
  23.  
  24. if(preg_match("/Windows/i",$agent) || preg_match("/NT/i",$agent)){ $win++; $found++; } if(preg_match("/Mac_PowerPC/i",$agent)){ $mac++; $found++; }
  25. if(preg_match("/Linux/i",$agent)){ $linux++; $found++; } if(preg_match("/UNIX/i",$agent)){ $unix++; $found++; }
  26. $unk2 = $found - $total_hits;
  27. $winbw = $win / $total_hits * 100; $macbw = $mac / $total_hits * 100;
  28. $linuxbw = $linux / $total_hits * 100; $unixbw = $unix / $total_hits * 100;
  29. $unk2bw = $unk2 / $total_hits * 100;
  30. }
  31. $content .= <<< HTML
  32. // hier staat het stukje om de gegevens weer te geven...
  33. HTML;
  34. }
  35. }
  36. ?>

de user agent van netscape in ie modus is:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322) Netscape/8.1

en van ie:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; InfoPath.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322)

5 antwoorden

Gesponsorde links
Offline BigBug - 24/03/2006 20:18
Avatar van BigBug PHP expert Zet er een preg_match met /Mozilla/i bij.
Offline Rien91 - 24/03/2006 20:43
Avatar van Rien91 HTML interesse Dat werkt dus niet... Want bijna alle useragents hebben vooraan "Mozilla" staan. Maar toch bedankt voor je reactie!
Offline kokx - 24/03/2006 20:55
Avatar van kokx Onbekend Gebruik elseif
en begin met netscape.
Offline BigBug - 24/03/2006 20:56
Avatar van BigBug PHP expert Er moet toch een manier zijn hoe je dat kan wegstrippen en toch het juiste krijgt,... En anders maak je van dat overige gewoon Mozilla Dr is toch verder niet zo veel wat echt boven de 1% gebruikt word!
Offline Rien91 - 24/03/2006 21:16 (laatste wijziging 24/03/2006 21:17)
Avatar van Rien91 HTML interesse Bedank kokx! Het werkt! Hoe simpel kunnen dingen soms toch zijn... 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.193s