felix_se_cat: Browserversionfrage / appVersion ersten 3 Zeichen immer Version?

Hi, ich brauche für eine Browserstatistik Werte von JS, unter anderem auch die Browserversion.
Ich kann mir ja per appName den Browsernamen einlesen aber ich brauche auch die Version! Am besten wäre sowas wie "Microsoft Internet Explorer 6.0" oder "Netscape 7.1" usw (die Statistik sollte nicht auf verschiedene Browser limitiert sein sondern sie sollte dann dynamisch für ALLE möglichen Browser funktionieren, deshalb die Frage ob bei appVersion die ersten 3 Zeichen die Version sind).
Wie bekomm ich sowas hin in Javascript oder gibts dafür in PHP angenehmere Funktionen??
Danke für jegliche Antworten.

  1. Moin!

    Wie bekomm ich sowas hin in Javascript oder gibts dafür in PHP angenehmere Funktionen??

    Javascript ist für eine Statistik sowieso ungeeignet. In PHP kriegst du $_SERVER['HTTP_USER_AGENT'], den du auswerten kannst. Und dafür gibts bestimmt schon fertigen Code, sofern du das nicht selber auseinanderfriemeln willst.

    - Sven Rautenberg

    1. danke, das hat geholfen.

    2. Hi,

      Javascript ist für eine Statistik sowieso ungeeignet.

      Na ja, denn ...

      In PHP kriegst du $_SERVER['HTTP_USER_AGENT'],

      ... den kann man fälschen. In JS kann man immerhin gezielt Browsereigenschaften abfragen, um damit den User-Agent zu verifizieren.

      Gruß, Cybaer

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      1. Moin!

        Javascript ist für eine Statistik sowieso ungeeignet.

        Na ja, denn ...

        In PHP kriegst du $_SERVER['HTTP_USER_AGENT'],

        ... den kann man fälschen. In JS kann man immerhin gezielt Browsereigenschaften abfragen, um damit den User-Agent zu verifizieren.

        Ich hatte mal eine Spezialversion von Opera 5 gefertigt, in der die javascriptseitig abfragbare Browserkennung beim Ausgeben als IE keinerlei Hinweis auf ebendiesen Opera ergab (sondern nur ungewöhnlich viele Leerzeichen an der Stelle), weil meine Online-Bank meinte, den Opera nicht hineinlassen zu müssen (obwohl es trotzdem funktioniert hat).

        Wer es drauf anlegt, wird im Zweifel auch window.opera et al lahmlegen können, so dass nichts erkennbares mehr bleibt. Und dann hat man eigentlich nur noch einen sehr anonymen Browser, dem man alles glauben muß, was er einem sagt, ohne es prüfen zu können.

        - Sven Rautenberg

        1. Hi,

          Wer es drauf anlegt, wird im Zweifel auch window.opera et al lahmlegen können, so dass nichts erkennbares mehr bleibt. Und dann hat man eigentlich nur noch einen sehr anonymen Browser, dem man alles glauben muß, was er einem sagt, ohne es prüfen zu können.

          Um allerdings z.B. als IE durchzugehen, müßte man auch diverse proprietäre Eigenschaften des IEs nachbilden, bzw. zumindest so tun als ob. :)

          Gruß, Cybaer

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
  2. Hi, letzten endes müsstest du noch viel selber coden, ich schreibe allerdings atm an einer javascript library,

    welche informationen zum browser sammelt, und verifiziert.

    so wird dir sicherlich aufgefallen sein, dass der internet explorer seit version 4.0 keine version änderungen mehr vorne macht, sondern im string hinten bei MSIE X.X....

    die library liest die korrekten informationen aus.

    sie erkennt:

    • internet explorer ab 4.0

    • alle gecko basierten browser (mozilla, firebird, k-meleon, netscape nach 4.x, chimera, galeon, beonex, etc.)

    • netscape 4.x

    • konqueror

    • opera (auch wenn opera faked)

    • netcaptor

    • avantbrowser bis version 7.0.2.8 (danach keien möglichkeit der indentifikation mehr

    • sowie theoretisch apples safari, allerdings konnte ich das nicht testen, da ich keinen mac habe.

    natürlich erkennt es keine browser die javascript nicht, oder nicht ausreichend unterstützen.

    wenn dir das ding hilft, kann ich es dir gerne geben. ist allerdings noch innem entwicklungsstadium ;)

    Gruß

    Phil

    --
    ich bin ein nachmacher: http://www.eppstein.de
    1. Moin!

      Hi, letzten endes müsstest du noch viel selber coden, ich schreibe allerdings atm an einer javascript library,

      welche informationen zum browser sammelt, und verifiziert.

      Ich frage mich - und dann einfach mal dich: Ist das sinnvoll?

      Es gibt das "ultimate browser sniffer script" (bei Google eingeben, der erste Fund bei Netscape ist es). Das Script hat alle möglichen und unmöglichen Dinge über einen Browser versucht zu erkennen, und es in einem großen Sack von "is_irgendwas"-Variablen dargestellt.

      So, wie die Version 3.03 von damals online verfügbar ist, ist aber leider z.B. bei Opera 5 Schluß mit der Erkennung.

      Und das ist eben genau das Problem: Browsersniffing bringt nichts, wenn man ständig aktualisierte Skripte verteilen muß, um up to date zu bleiben und die Versionen korrekt zu erkennen. Weder bringt es was auf dem Client, noch bringt es was auf dem Server. Eigentlich kann man nichts anderes tun, als typische Charakteristiken von verschiedenen Browser-FAMILIEN für die Versionsnummernerkennung zu berücksichtigen (z.B: IE hat die Nummer immer hinter "MSIE", Opera hinter "Opera", welches ganz vorn oder ganz hinten stehen kann, etc...)

      Und all die nicht-konformen User-Agent-Strings werden eben unter "Sonstiges" abgehandelt, oder bis aufs letzte Byte korrekt erfaßt und als Einzelergebnis ausgeworfen.

      sie erkennt:

      • internet explorer ab 4.0

      Vermutlich nur solange, bis Microsoft den "Mozilla/4.0 (compatible..."-Modus aufgibt und sich eine eigene Kennung ausdenkt. Warum beispielsweise nicht beim neuen IE 7 damit anfangen?

      • alle gecko basierten browser (mozilla, firebird, k-meleon, netscape nach 4.x, chimera, galeon, beonex, etc.)

      Damit allein hat man ja schon viel zu tun - bleibt die Frage, welchen Sinn das macht. Für Browserweichen jedenfalls keinen, denn die verstehen ja alle getElementById.

      • netscape 4.x

      Hurra - der einzige Browser, der auch in hundert Jahren noch sicher erkannt werden wird, weil sich an dem Teil nie mehr was ändern wird.

      • konqueror

      • opera (auch wenn opera faked)

      • netcaptor

      • avantbrowser bis version 7.0.2.8 (danach keien möglichkeit der indentifikation mehr

      • sowie theoretisch apples safari, allerdings konnte ich das nicht testen, da ich keinen mac habe.

      Was ist mit den restlichen Browsern, die es für beliebige andere Betriebssysteme gibt? http://browsers.evolt.org ist voll davon. ;)

      natürlich erkennt es keine browser die javascript nicht, oder nicht ausreichend unterstützen.

      Das ultimative Snifferskript unterstützt immerhin alle Browser ab Javascript 1.0. ;)

      - Sven Rautenberg

      1. Moin!

        Hi, letzten endes müsstest du noch viel selber coden, ich schreibe allerdings atm an einer javascript library,

        welche informationen zum browser sammelt, und verifiziert.

        Ich frage mich - und dann einfach mal dich: Ist das sinnvoll?

        hmmm, die frage habe ich mri auch mehrfach gestellt. Prinzipiell: Nein, es macht nie _wirklich_ sinn, eine browser weiche zu bauen. Sinn macht es, browser unabhängige seiten zu basteln. Aber mir war langweilig, und es macht spaß ;o)

        Und das ist eben genau das Problem: Browsersniffing bringt nichts, wenn man ständig aktualisierte Skripte verteilen muß, um up to date zu bleiben und die Versionen korrekt zu erkennen. Weder bringt es was auf dem Client, noch bringt es was auf dem Server. Eigentlich kann man nichts anderes tun, als typische Charakteristiken von verschiedenen Browser-FAMILIEN für die Versionsnummernerkennung zu berücksichtigen (z.B: IE hat die Nummer immer hinter "MSIE", Opera hinter "Opera", welches ganz vorn oder ganz hinten stehen kann, etc...)

        genau das macht mein script. Wenn ein browser hersteller wirklich mal den kompletten string ändern würde, dann würde der neue browser nicht erkannt werden, dass stimmt.

        Die wichtigste funktion ist in meinem fall die grobe unterscheidung. in erster linie unterscheidet mein script nur zwischen 6 Typen browser:
        MSIE
        GCKO
        NS4X
        OPRA
        KNQR
        SFRI

        ich versuche mich so weit wie möglich an allgemein gültige charakteristika der browser zu halten.

        sie erkennt:

        • internet explorer ab 4.0
          Vermutlich nur solange, bis Microsoft den "Mozilla/4.0 (compatible..."-Modus aufgibt und sich eine eigene Kennung ausdenkt. Warum beispielsweise nicht beim neuen IE 7 damit anfangen?

        nein, die IE erkennung ist nicht nur am navigatot.userAgent festgemacht. ;-)

        • alle gecko basierten browser (mozilla, firebird, k-meleon, netscape nach 4.x, chimera, galeon, beonex, etc.)
          Damit allein hat man ja schon viel zu tun - bleibt die Frage, welchen Sinn das macht. Für Browserweichen jedenfalls keinen, denn die verstehen ja alle getElementById.

        richtig, wie oben geschrieben, für browserweichen ist es sinnvoller, sie alle als Gecko zu betrachten. die differenzierung ist nur für so tolle "Hallo, du surfst mit..." scripte gedacht.

        • netscape 4.x
          Hurra - der einzige Browser, der auch in hundert Jahren noch sicher erkannt werden wird, weil sich an dem Teil nie mehr was ändern wird.

        dazu sag ich nur:

        //Netscape 4.x detection, now that's easy, look, wether the browser is dumb - well, that's netscape
         if(!document.all && !document.getElementById)
          Browser = "NS4X";
        Der einfachste codeteil mneines scripts, udn greift immer ;-)
        mehr probs macht ns4x da schon beim erkennen des betriebssystem ;)

        Was ist mit den restlichen Browsern, die es für beliebige andere Betriebssysteme gibt? http://browsers.evolt.org ist voll davon. ;)

        von welchen beliebten betriebssystemen redest du?
         wenn es dich interessiert, heir die browser die es definitiv NCIHT findet ;)

        • W3C Amaya (Doesn't support JavaScript)
        • 1X (Doesn't support JavaScript)
        • Internet Explorer < 4.0 (Too bad JavaScript support)
        • WebTV (Too bad JavaScript support)
        • Netshark (Doesn't support JavaScript)
        • Lynx (Sad, but true,  Doesn't Support JavaScript)

        Die Liste ist leider nicht vollständig, er erkennt nämlich, um genau zu sein, alle nicht, die er nicht kennt ;) Das sind einige, nur Ihrer prozentualer Anteil ist gering ;) Trotzdem würde ich Sie gerne unterstützen, na mal sehn :)

        natürlich erkennt es keine browser die javascript nicht, oder nicht ausreichend unterstützen.

        Das ultimative Snifferskript unterstützt immerhin alle Browser ab Javascript 1.0. ;)

        Glaub mir, wenn ich nicht ausreichend schreibe, meine ich, das sie mit for schleifen o.ä. nicht zurecht kommen ;)

        Alles in allem, geb ich dir recht, es macht an und für sich keinen sinn, ja, aber es macht mri spaß, und deshalb verteidige ich mein scriptchen jetzt mal wie eine angegriffenen mami ;)

        wenn du möchtest, schick ich dir das ding gern zu, bzw geb dir nen link, dann kannst du gerne den quelltext stück für stück ausseinander nehmen, und die schwächen aufzeigen, würde mich freuen :Þ

        Lieber Gruß

        Phil

        --
        ich bin ein nachmacher: http://www.eppstein.de
        1. Hi,

          ich versuche mich so weit wie möglich an allgemein gültige charakteristika der browser zu halten.

          Interessant ist so eine Abfrage (ich benutze auch eine eigene) IMHO nur, wenn sie sich *nicht* wie die üblichen Client-Sniffer am User-Agent orientiert!

          Was mich zur Frage führt, ob Du eine echte Unterscheidungsmöglichkeit für die KHTML-Browser Konqueror & Safari kennst (also sowohl voneinander, als auch vom Rest der Welt - die fehlt mir nämlich noch).

          Gruß, Cybaer

          PS: IE und AOL-IE unerscheiden sich übrigens technisch.

          --
          Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!