Toon posts:

[php] browsercheck - browsers

Pagina: 1
Acties:

Verwijderd

Topicstarter
ok, ik wil dus een browsercheck scripje maken om afhankelijk van de gebruikte browser een stylesheet te includen.

MAAR - ik zou dus niet weten waar ik op moet 'ereggen', ik krijg van die ontzettend vage dingen terug met IE/netscape/opera...

het (misschien bekende) gebruikte scripje:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
echo $_SERVER['HTTP_USER_AGENT'] . "<hr />\n";

function list_array ($array) { 
    while (list ($key, $value) = each ($array)) { 
    $str .= "<b>$key:</b> $value<br>\n"; 
    } 
    return $str; 
} 
$browser = get_browser($_SERVER['HTTP_USER_AGENT']); 
echo list_array ((array) $browser); 

?>


de antwoorden:

internet explorer 6.0
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)
--------------------------------------------------------------------------------
 browser_name_pattern: Mozilla/4\.0.*
parent: Netscape 4.0
browser: Netscape
version: 4.0
majorver: #4
minorver: #0
frames: 1
tables: 1
cookies: 1
backgroundsounds: 
vbscript: 
javascript: 1
javaapplets: 1
activexcontrols: 
beta:


netscape 6.23
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:0.9.4.1) Gecko/20020508 Netscape6/6.2.3 
browser_name_pattern: Default Browser Capability Settings
browser: Default
version: 0.0
majorver: #0
minorver: #0
frames:
tables: 1
cookies:
backgroundsounds:
vbscript:
javascript:
javaapplets:
activexcontrols:
ak:
sk:
aol:
beta:
win16:
crawler:
cdf:


Opera 6.04
code:
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
Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.04 [en]



browser_name_pattern: Mozilla/4\.0 (compatible; MSIE 5\..*)
parent: IE 5.0
browser: IE
version: 5.0
majorver: #5
minorver: #0
frames: 1
tables: 1
cookies: 1
backgroundsounds: 1
vbscript: 1
javascript: 1
javaapplets: 1
activexcontrols: 1
win16:
beta:
ak:
sk:
aol:
crawler:
cdf: 1


maar hoe kan ik uit deze informatie ooit halen of iets wel of geen MSIE is??? ik zie bijv. bij opera ook IE/MSIE voorbij komen, en bij IE dan weer netscape... :?

*zoek werkt dus niet, met google vind ik ook niks :( *

  • flat
  • Registratie: Mei 2000
  • Niet online
als er MSIE instaat, is 't IE, staat er gecko in, is 't mozilla, en staat er opera in, dan is 't opera?

is zo maar 'n gokje, gebaseerd op jouw info

"Happiness is a way of travel, not a destination."
--Roy Goodman


Verwijderd

Topicstarter
maar bij opera geeft ie dus even hard MSIE terug :? :? :?

  • bluesbrother
  • Registratie: Februari 2002
  • Laatst online: 26-01-2025

bluesbrother

Blues Rocks!!!

Opera kan IEE nabootsen en dan zal hij deze gegevens wel meegeven denk ik?

Wil je je pizza in 4 of 8 stukken? .......Doe maar in 4, 8 krijg ik niet op.


Verwijderd

Ik geloof dat Opera standaard na installatie zich altijd identificeerd als MSIE op een of andere windows versie.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09:31

Crazy D

I think we should take a look.

Opera had altijd aan het eind van de user-agent string Opera staan, ook als je 'm als IE liet tonen (alleen was de rest van de string wel die van IE). Dat was iig zo voordat die patch uitkwam toen MSN oid alleen nog maar met IE te bezoeken was. Hoe dat nu is weet ik niet, maar checken op de string Opera is iig het makkelijkste om Opera eruit te filteren (en als ie zich echt als IE laat zien, hopelijk niet want zo blijft IE 99.9% van de markt in handen houden volgens de stats, is dat ook niet te detecten (anders zou die instelling geen zin hebben :)).

Afhankelijk van hoe uitgebreidt je wilt gaan, kun je als 2e checken op Gecko, das bij mijn weten zowel Mozilla als Netscape, en als laatste op de aanwezigheid van MSIE in de string (als laatste omdat anders de Opera check niet werkt).

Exact expert nodig?


  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Laat het afhandelen door JavaScript, die heeft daar speciale functies voor zover ik weet :)

  • Blubber
  • Registratie: Mei 2000
  • Niet online
Glimi schreef op 06 augustus 2002 @ 10:52:
Laat het afhandelen door JavaScript, die heeft daar speciale functies voor zover ik weet :)
idd, tjek de htmlcode van www.tweakers.net maar eens... Femme heeft ook JavaScript gebruikt om NS en IE uit elkaar te halen voor de stylesheets :)

  • kvdveer
  • Registratie: November 2000
  • Laatst online: 06-11-2025

kvdveer

Z.O.Z.

Opera is de enige bijzondere in het rijtje:
hij stuurt zoiets als:
Mozilla/4.0 (compatible; MSIE 5.0; Windows NT 5.0; Opera)

Dus als je als eerste checkt op Opera, dan komt alles goed

Localhost, sweet localhost


  • paulh
  • Registratie: Juli 1999
  • Laatst online: 22-06 15:30
is die get_browser functie niet afhankelijk van de geinstalleerde browsecap.ini ?? ... probeer daar eens een recente versie van te vinden want degene die bij php zit is volgens mij al 2 of 3 jaar niet meer geupdate.

Kijk anders eens op http://sourceforge.net ... daar staat een project tussen die browser herkenning doet.

[ZwareMetalen.com] - [Kom in aktie tegen de CO2 maffia]


  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 09-08 19:19
PEAR::Net_UserAgent_Detect

sourceode staat ook hier in de cvs

Verwijderd

Topicstarter
oohps, een dagje niet kijken en 7 reply's erbij, thank ya all ;)

  • Millennium
  • Registratie: Augustus 2000
  • Laatst online: 25-08 14:17

Millennium

Bug free !!!

Opera kan zich indentificeren als verschillende browsers:
Opera identieficatie: Opera/6.04 (Windows XP; U) [en]

Opera met MSIE indentificatie: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 6.04 [en]

Opera met Mozilla indentificatie:
Mozilla/5.0 (Windows 98; U) Opera 6.04 [en]
Mozilla/4.78 (Windows XP; U) Opera 6.04 [en]
Mozilla/3.0 (Windows XP; U) Opera 6.04 [en]


Het is over het algemeen verstandig Opera te supporten als die zich indentificeert als Opera
Anders gewoon afhandelen als de browser waarmee hij zich indentificeert

Rampen bak 2004


  • martinvw
  • Registratie: Februari 2002
  • Laatst online: 14-12-2025
hmmz, daar heb ik nog een script voor liggen:

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
41
42
<?PHP
  $ba = strtolower(rawurldecode($HTTP_USER_AGENT));

  if (eregi('opera ([0-9]+\.[0-9]+)', $ba, $regs)){
  $br = 'Opera ';
  $ver = $regs[1];
  }
  elseif (eregi('msie ([0-9]+\.[0-9]+)', $ba, $regs)) {
  $br = 'Microsoft Internet Explorer ';
  $ver = $regs[1];
  }
  elseif (eregi('opera/([0-9]+\.[0-9]+)', $ba, $regs)){
  $br = 'opera';
  $ver = $regs[1];
  }
  elseif (eregi('lynx/([0-9]+\.[0-9]+\.[0-9]+)', $ba, $regs)) {
  $br = 'Lynx ';
  $ver = $regs[1];
  }
  elseif (eregi('konqueror/([0-9]+\.[0-9]+\.[0-9]+)', $ba, $regs)) {
  $br = 'Konqueror ';
  $ver = $regs[1];
  }
  elseif (eregi('amaya ([0-9]+\.[0-9]+)', $ba, $regs)) {
  $br = 'Amaya ';
  $ver = $regs[1];
  }
  elseif ((eregi('bot', $ba)) || (eregi('google', $ba)) || (eregi('slurp', $ba)) || (eregi('scooter', $ba)) || (eregi('spider', $ba)) || (eregi('crawler', $ba)) || (eregi('archiver', $ba))) {
  $br = 'Searchengine';
  }
  elseif (eregi('netscape6/([0-9]+\.[0-9]+\.[0-9]+)', $ba, $regs)) {
  $br = 'Netscape ';
  $ver = $regs[1];
  }
  elseif (eregi('mozilla/([0-9]+\.[0-9]+)', $ba, $regs))
  {
  $br = 'Netscape';
  $ver = $regs[1];
  }

  $br = $br.$ver;
?>


Hier mee moet het lukken eventueel kan je de versie check *dmv regex-en* achterwegenlaten, maar nu weet je op welke string je moet zoeken.

Hmmz, ook hij/zij (??) struikelt over lange regels, maja.

Uhm, deze identificatie heb ik niet himmel zelf bedacht dus denkt iemand delen te herkennen sorry

[ Voor 0% gewijzigd door martinvw op 07-08-2002 00:36 . Reden: leer schrijven :-S ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Millennium schreef op 06 augustus 2002 @ 22:35:
...

Het is over het algemeen verstandig Opera te supporten als die zich indentificeert als Opera
Anders gewoon afhandelen als de browser waarmee hij zich indentificeert
Ben ik het niet mee eens; als Opera zich identificeerd als IE5.0, en je behandeld hem als IE5.0 dan kom je dus vaak (zeker met scripting) bedrogen uit omdat Opera nog niet de helft van de DOM/CSS/ECMA standaards heeft geimplementeerd die IE5 al wel in zich heeft!
Ook wat betreft het checken op method-ondersteuning (wat bij scripting eigenlijk de voorkeur heeft boven een browser-sniffer) kom je bij Opera vaak bedrogen uit; zo geeft Opera netjes 'true' terug als je document.createElement afvraagd binnen javascript; dit blijkt echter een loze functie te zijn omdat Opera nog helemaal niet het dynamisch toevoegen van HTML elements ondersteund!
Kortom: Opera is gewoon een browser die je nooit moet geloven; het is een schaap in wolfskleren...

Intentionally left blank


  • marty
  • Registratie: Augustus 2002
  • Laatst online: 27-03-2023
hier is nog een toevoeging die je onderaan zou kunnen zetten (na alle if/elseifjes):
PHP:
1
2
3
4
5
$version_lengte = strlen(substr(strchr($ver, "."), 1));
if ($version_lengte > 1)
{
    $ver = substr($ver, 0, -($version_lengte - 1));
}


ik heb 'm zelf tussen een statistieken scriptje gepaste en vond het nogal irritant dat ie onderscheidt maakte tussen IE 5.0 en 5.01. dat voorkom je door die toevoeging

Overigens, nog een vraagje: Bij mij herkent ie Netscape 6.25.0 niet. Het gekke is dat ie die 5 als een soort onbestaanbaar teken ziet.
Als ik de regex verander naar
PHP:
1
eregi("netscape6/([0-9]+\.[0-9]+)"
, dan zegt ie namelijk dat netscape 6.2 gevonden is. Die 5 kan ie op een of andere manier nix mee. (Heb ook al dingen als
PHP:
1
eregi("netscape6/([0-9]+\..{1,2}\.)"
geprobeerd, maar zodra ik die \. erachter toevoeg gaat het mis en herkent ie 'm niet meer.
erg vaag..
Pagina: 1