Avatar billede -kenner- Nybegynder
15. marts 2006 - 23:28 Der er 26 kommentarer og
2 løsninger

Hente oplysninger fra brugerens computer!

Hej eksperter,

Jeg arbejder paa et statistik system, hvor jeg vil hente brugerens Browser-opslysninger samt skaerm-opslyninger.

Jeg fandt funktionen get_browser() som giver mig en del af den information jeg har brug for, men jeg mangler dog stadig brugerens skaerm opsloesning. Er det muligt at hente en brugers skaerm oploesning med PHP?

Der ud over taenkte jeg paa om det er mugligt at hente informatin om hvor brugeren kom fra, altsaa siden som brugeren var paa foer han kom in paa min side.

<?php
echo $_SERVER['HTTP_USER_AGENT'] . "\n\n";

$browser = get_browser(null, true);
print_r($browser);
?> 

The above example will output something similar to:

Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040803 Firefox/0.9.3

Array
(
    [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$
    [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9*
    [parent] => Firefox 0.9
    [platform] => WinXP
    [browser] => Firefox
    [version] => 0.9
    [majorver] => 0
    [minorver] => 9
    [css] => 2
    [frames] => 1
    [iframes] => 1
    [tables] => 1
    [cookies] => 1
    [backgroundsounds] =>
    [vbscript] =>
    [javascript] => 1
    [javaapplets] => 1
    [activexcontrols] =>
    [cdf] =>
    [aol] =>
    [beta] => 1
    [win16] =>
    [crawler] =>
    [stripper] =>
    [wap] =>
    [netclr] =>
)
Avatar billede terrak Nybegynder
15. marts 2006 - 23:37 #1
Så vidt jeg ved, kan PHP ikke direkte få adgang til brugerens skærmopløsning.

Jeg har altid brugt et Javascript-workaround, hvor du laver noget lignende:
document.location.href="<?php echo $_SERVER['PHP_SELF']; ?>?width="+screen.width+"&height="+screen.height;

Hvor du så henter de to variabler i PHP, via $_GET['width'] og $_GET['height'].
Avatar billede plazm Nybegynder
15. marts 2006 - 23:45 #2
eller også så laver du et usynligt billede som får sin src fra en javascript der smider opløsningen med... eks
document.getElementById('img').src ='stats.php?w='+screen.width+'&h='+screen.height;
Avatar billede -kenner- Nybegynder
16. marts 2006 - 23:55 #3
NU kender jeg ingenting til javascript, saa kan i give mig noget copy n' paste.

Jeg kom til at taenke paa at det er jo ikke alle der har javascript, saa det vil jo ikke virke i deres browsere..
Avatar billede plazm Nybegynder
17. marts 2006 - 00:56 #4
antallet af personer som ikke har javascript er nu begrænset, du kunne jo lave så bileddet normalt pegede på stats.php og så tjekke om der kort tid efter kom samme request bare med ?w=lala&h=lala sat på...
Avatar billede -kenner- Nybegynder
17. marts 2006 - 14:29 #5
plazm > okay, men jeg ved som sagt ikke 100% hvordan.
Saadan her? (jeg henter et element kan jeg se, skal jeg ikke angive et ID for at hente det?):

<script type="taxt/javascript">
document.getElementById('img').src ='stats.php?w='+screen.width+'&h='+screen.height;
</script>
Avatar billede plazm Nybegynder
17. marts 2006 - 14:55 #6
<script type="taxt/javascript">
document.getElementById('statsimg').src ='stats.php?w='+screen.width+'&h='+screen.height;
</script>
<img src="stats.php" id="statsimg" style="display: none;">
Avatar billede terrak Nybegynder
17. marts 2006 - 15:07 #7
image-elementet skal vel sættes ind før scriptet?
Avatar billede plazm Nybegynder
17. marts 2006 - 15:24 #8
Det er ligemeget, hvis du bruger denne


<script type="taxt/javascript">
document.onload = function() {
  document.getElementById('statsimg').src ='stats.php?w='+screen.width+'&h='+screen.height;
}
</script>
<img src="stats.php" id="statsimg" style="display: none;">
Avatar billede terrak Nybegynder
17. marts 2006 - 15:31 #9
Ja, men nu var han som nævnt ikke så meget inde i Javascript :-)

..og for at være lidt mere irriterende ;) så er har du byggere videre på kenner's eksempel, hvor han er kommet til at skrive taxt i stedet for text.
Avatar billede plazm Nybegynder
17. marts 2006 - 16:06 #10
hehe ja, det gjorde jeg :)

<script type="text/javascript">
document.onload = function() {
  document.getElementById('statsimg').src ='stats.php?w='+screen.width+'&h='+screen.height;
}
</script>
<img src="stats.php" id="statsimg" style="display: none;">
Avatar billede -kenner- Nybegynder
17. marts 2006 - 19:51 #11
OK, jeg vil teste koden naar jeg kommer hjem fra skole, og saa vil jeg acceptere :)

(Bor i USA for tiden, saa det vil blive ca. kl. 23:00 jeres tid)
Avatar billede -kenner- Nybegynder
18. marts 2006 - 19:40 #12
Jeg testede koden, og som det staar kan jeg ikke faa den til at virke. Jeg har testet PHP delen af scriptet, ved at sende noejagtig samme url til stats.php og det blev skrevet i databasen uden problemer, saa der er noget ved koden der ikke virker.
Jeg smider denne kode i head:
<script type="text/javascript">
document.onload = function() {
  document.getElementById('statsimg').src ='stats.php?w='+screen.width+'&h='+screen.height+'&platform='+navigator.platform+'&browser='+navigator.appCodeName+'&sprog='+navigator.language+'&version='+navigator.vendor';
}
</script>
og denne i body:
<img src="stats.php" id="statsimg" style="display: none;">
Avatar billede terrak Nybegynder
18. marts 2006 - 19:47 #13
Prøv at fjerne det sidste enkelt-citationstegn
'
fra din url-streng.
Avatar billede -kenner- Nybegynder
18. marts 2006 - 20:07 #14
Jeg kan se at i ikke fik hele koden med pga. overflow:hidden pa exp.dk

          <script type="text/javascript">
document.onload = function() {
  document.getElementById('statsimg').src ='stats.php?w='+screen.width+'&h='+screen.height+'&platform='+navigator.platform+'
&browser='+navigator.appCodeName+'&sprog='+navigator.language+'
&version='+navigator.vendor';
}
</script>
Avatar billede terrak Nybegynder
18. marts 2006 - 20:09 #15
Som jeg nævnte før, skal '+navigator.vendor'; være '+navigator.vendor;
Avatar billede -kenner- Nybegynder
18. marts 2006 - 20:14 #16
terrak > Jeg har nu fjernet ' og der bliver stadig ikke skrevet noget.
Avatar billede terrak Nybegynder
18. marts 2006 - 20:23 #17
Det virker glimrende her :-)
Avatar billede -kenner- Nybegynder
18. marts 2006 - 20:59 #18
Underligt.

Du smider de to koder paa siden som du vil have statistikken fra, right?
Det eneste der sker er at der bliver indsat en tom raekke i min database, fordi der ikke er nogen data der bliver sendt fra scriptet.

Hvordan saetter du koderne op? begge i body eller en i head og <img> i body?
Avatar billede terrak Nybegynder
18. marts 2006 - 21:20 #19
Hov, det var fordi stats.php var sat som src til at starte med.

Prøv at erstatte document.onload med window.onload
Avatar billede -kenner- Nybegynder
19. marts 2006 - 06:16 #20
ok, window.onload hjalp, for nu bliver der gemt noget i databasen.

Men det er nu stadig lidt underligt, fordi, selv om jeg aabner siden i IE, saa skriver den mozilla i databasen, men den kan dog ikke give mig sprog eller version (firefox).

Jeg har baade IE og firefox paa min computer, men skulle den ikke abre raportere info for den browser, som siden bliver aabnet med?
Avatar billede plazm Nybegynder
19. marts 2006 - 09:51 #21
Det er fordi at IE er baseret på en gammel mozilla/netscape engine, og de har derfor altid haft navnet mozilla(msie blabla)
Avatar billede terrak Nybegynder
19. marts 2006 - 10:31 #22
Så må du lave en søgning i strengen, for MSIE, Firefox og andre kendte browsere. Og så sætte resulatet ind.
Avatar billede -kenner- Nybegynder
19. marts 2006 - 21:13 #23
Hvilken streng vil du lave en soegning i naar den returnere "unknown"?
Avatar billede terrak Nybegynder
19. marts 2006 - 22:15 #24
Umiddelbart vil jeg ikke søge i en streng, men bare bruge værdierne fra bl.a. $browser['browser'], $browser['version'] og $browser['platform'].

Hvad er det der returnerer "unknown"?
Avatar billede -kenner- Nybegynder
20. marts 2006 - 01:00 #25
jeg loeste det selv.
Avatar billede -kenner- Nybegynder
20. marts 2006 - 01:01 #26
tarrak og plazm send svar :)
Avatar billede terrak Nybegynder
20. marts 2006 - 07:21 #27
Det er en god ide at skrive løsningen, hvis nu en anden bruger står med samme problem, og kommer ind på dette spørgsmål.
Avatar billede -kenner- Nybegynder
21. marts 2006 - 03:16 #28
Okay, jeg kan da godt poste det, men i javascript folk faar nok ikke meget nytte af det:

<?php
//Lav funktion
function _get_browser()
{
  $browser = array ( //reversed array
  "OPERA",
  "MSIE",            // parent
  "NETSCAPE",
  "FIREFOX",
  "SAFARI",
  "KONQUEROR",
  "MOZILLA"        // parent
  );
 
  $info['browser'] = "OTHER";
 
  foreach ($browser as $parent) 
  {
  if ( ($s = strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), $parent)) !== FALSE )
  {           
    $f = $s + strlen($parent);
    $version = substr($_SERVER['HTTP_USER_AGENT'], $f, 6);
    $version = preg_replace('/[^0-9,.]/','',$version);
             
    $info['browser'] = $parent;
    $info['version'] = $version;
    break; // first match wins
  }
  }
 
  return $info;
}

//hent funktion ind i script
_get_browser();
?>
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