Avatar billede mads1987 Nybegynder
26. februar 2004 - 20:00 Der er 25 kommentarer og
1 løsning

Statistik OS/Brower/opløsning

Efter lang tid søgen på nettet efter et simpelt, men fungerende statistik system, uden held. Er jeg gået igang med at lave mit eget, og det er også gået rigtig godt, indtil nu.
Der er tre ting jeg mangler, og jeg kan ikke helt overskue hvordan jeg skal gøre det.

- OS
- Browser
- Opløsning

Jeg er kommet så langt at jeg nok jeg bruge $_SERVER['HTTP_USER_AGENT'] for at finde hvert fald et par af dem. Men jeg får dette output:

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;
H
vilket jeg ikke får så meget ud af. Hvordan får jeg den til at skrive Internet Explore 6 og Windows XP ud fra det?
Avatar billede xyborx Nybegynder
26. februar 2004 - 20:02 #1
www.php.net/get_browser kan måske være nyttig. Ellers må du i gang med at søge i strengen efter forskellige tegn på hvilken browser det er..
Avatar billede xyborx Nybegynder
26. februar 2004 - 20:06 #2
Opløsningen kan du ikke finde med PHP alene, da PHP kun er et server-side sprog, og ikke arbejder på klienten. Et JavaScript der checker opløsningen og smider det tilbage til et PHP script på serveren er nok den nemmeste løsning. Jeg kan ikke JavaScript, så den del kan jeg ikke hjælpe mere med.
Avatar billede mads1987 Nybegynder
26. februar 2004 - 20:10 #3
Hvis vi nu strater med browseren så. Så har jeg været inde og se på get browser funktionen, men i eksemplet bruger de $_SERVER['HTTP_USER_AGENT'] og dette skrive som sagt: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; hvilket jeg ikke kan bruge.
Kan ikke helt overskue hvordan jeg skal bruge get_browser kan en evt. give mig et eks?
Avatar billede fangel Nybegynder
26. februar 2004 - 20:42 #4
jeg har lavet en funktion (endnu mangler den lidt) der kan fange browser og OS...

se den på:
http://fangel.linux.dk/browser_and_os_detector.phps (ses bedst i store opløsninger da kommentare ellers vil springe ned på næste linie)

prøv at inkluder den funktion og så skriv

---
<?php

// inkluder funktionen

echo "<pre>";
print_r(getStats());
echo "</pre>";
?>
---

der kan du se arrayet og hvad det indeholder... og så kan du ellers lege med det ,)

Morten
Avatar billede xyborx Nybegynder
26. februar 2004 - 20:44 #5
Jeg har ikke selv brugt den funktion, men udfra manualen kommer jeg frem til:
$browseros=get_browser($_SERVER['HTTP_USER_AGENT']);
echo 'Browser: '.$browseros['browser'].' v'.$browseros['version'].'<br />';
echo 'OS: '.$browseros['platform'];
Avatar billede fangel Nybegynder
26. februar 2004 - 20:44 #6
Avatar billede mads1987 Nybegynder
26. februar 2004 - 20:47 #7
Den ser godt nok meget avanceret ud! :) Prøver lige at lege lidt med det.
Avatar billede mads1987 Nybegynder
26. februar 2004 - 20:52 #8
Jeg prøvede først denne:

$browseros = get_browser($_SERVER['HTTP_USER_AGENT']);
echo 'Browser: '.$browseros['browser'].' v'.$browseros['version'].'<br />';
echo 'OS: '.$browseros['platform'];

Men når jeg kører den for jeg følgende:

Warning: get_browser(): browscap ini directive not set. in /home/web/web4253/statistik.php on line 1
Browser: v
OS:
Avatar billede fangel Nybegynder
26. februar 2004 - 20:57 #9
ja - get_browser græver du har browscat.ini instillet i php.ini - det har web10.dk åbenbart ik...

min funktion fejler visse steder.. men den kan stort set fange alle IE og Mozilla (Firebird) og med lidt held og andre sjove browsere...

Morten
Avatar billede Slettet bruger
26. februar 2004 - 22:36 #10
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;

Den linie fortæller faktisk helt præcist, at der er tale om en Internet Explorer 6 på WinXP. MSIE 6.0 er browseren. Og Windows XP er faktisk det samme som version 5.1 af Windows NT.
Avatar billede Slettet bruger
26. februar 2004 - 22:47 #11
Måske kan du bruge dette til inspiration:

if(preg_match('/; MSIE (\d+\.\d+);/',$_SERVER['HTTP_USER_AGENT'],$res){
  $browser='Microsoft Internet Explorer';
  $browserversion=$res[1]
}
Avatar billede Slettet bruger
26. februar 2004 - 22:47 #12
Rettelse:

if(preg_match('/; MSIE (\d+\.\d+);/',$_SERVER['HTTP_USER_AGENT'],$res){
  $browser='Microsoft Internet Explorer';
  $browserversion=$res[1];
}
Avatar billede mads1987 Nybegynder
28. februar 2004 - 10:27 #13
dea_pg - Nu har jeg kigget lidt på det. Og det ser jo meget gennemført ud, men er det f.eks. ikke muligt at den kun skrive windows versionen ud?
Avatar billede fangel Nybegynder
28. februar 2004 - 10:48 #14
tjoo... lave

$arr = getStats();
echo $arr['os']['version'];

det giver fx kun OS versionen...

Morten
Avatar billede mads1987 Nybegynder
28. februar 2004 - 15:53 #15
Det virker simpelthen perfekt. Du har hvertfald din del af point'ne, nu mangler jeg kun at løse problemet med hensyn til opløsning?
Avatar billede fangel Nybegynder
28. februar 2004 - 15:56 #16
det skal laves med JS... fx JS der requester et billede (læs: udskriver et <img>-tag) hvori den fyrer opløsning osv på som GET variabler...

Billedet skal så bare være et PHP script der registrere opløsningen og fremviser et billede (kan godt give dig et par ex.)

Morten
Avatar billede mads1987 Nybegynder
28. februar 2004 - 16:30 #17
Det ville være rigtig dejligt med et eksempel på hvordan det kan løses?
Avatar billede fangel Nybegynder
28. februar 2004 - 16:50 #18
jeg bruger følge JS kode til at kalde billedet med

<!-- Begin Stats -->
  <script language="JavaScript">
    var Referer = (""+escape(top.document.referrer) == "") ? 0 : ""+escape(top.document.referrer);
    var ClrDpth = window.screen.colorDepth;
    var Page="" + escape(top.document.location);
    var ScrRes = window.screen.width + "x" + window.screen.height;
    document.write("<img src='STI/TIL/DIT/BILLEDE-SCRIPT.php?Referer=" + Referer + "&ClrDpth=" + ClrDpth + "&ScrRes=" + ScrRes + "&Page=" + Page + "' border='0'>");
  </script>
  <noscript>
    <img src="STI/TIL/DIT/BILLEDE-SCRIPT.php" border="0">
  </noscript>
<!-- End Stats -->

---

i dit billede script laver du så alt det der gemmer i DB (inkl. browser / OS osv) og så udsender en header der forklare det er et billede (content-type) og så laver du en readfile() på et billede af samme type som du skrev du sendte ud...

Morten
Avatar billede fangel Nybegynder
28. februar 2004 - 16:52 #19
ad forrige kommentar

dit billedescript vil så modtage hvilken side browser kom fra ($_GET['Referer']), hans farve-dybde ($_GET['ClrDpth']), hans oplsøning ($_GEÞ['ScrRes']) og den side han er på nu ($_GET['Page'])...

hvis JS er slået fra modtager du ingen af variablerne

Morten
Avatar billede mads1987 Nybegynder
28. februar 2004 - 16:58 #20
Jeg er ked af det, men det er simpelthen for avanceret for mig. Tror du, at du kunne lave et lille bitte eksempel?
Avatar billede fangel Nybegynder
28. februar 2004 - 17:13 #21
jeg bruger selv dette billede-script
http://fangel.linux.dk/billede-script.phps

men det gør dig nok bare mere forvirret... ;)

Morten
Avatar billede mads1987 Nybegynder
28. februar 2004 - 17:17 #22
Ja, her kan jeg slet ikke se hvor du henter opløsningen henne :)
Avatar billede fangel Nybegynder
28. februar 2004 - 17:43 #23
jeg bruger ovennævnet JS script (i kommentaren 16:50:50) til at kalde det linkede PHP script som billede... JS scriptet sender bl.a. opløsningen som en GET variabel som PHP scriptet læser og gemmer i en database sammen med browser og os

Morten
Avatar billede mads1987 Nybegynder
28. februar 2004 - 17:45 #24
Nåh, det sagde mig lidt mere! Er ikke sikker på jeg når at kigge på det i dag. Men i morgen, må jeg lige se på det igen, hvis du er sød at lave phps filerne ligge.
Avatar billede fangel Nybegynder
28. februar 2004 - 17:47 #25
jep - serveren er min workstation, så den er ikke oppe 24/7 - men den er oppe i alle de timer hvor jeg er hjemme (så hele i morgen højst sandsynligt)

Morten
Avatar billede mads1987 Nybegynder
29. februar 2004 - 12:27 #26
Jeg får ikke lige kigget på det i dag heller. Men nu har jeg lige taget en kopi af phps'en. Tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester