Rol: Sicher erkennen, daß der Browser ein IE ist

Hi,

nachdem ich mein DHTML
http://www.teamone.de/selfaktuell/forum/?m=141280&t=27129  unter Nicht-IE nicht zu laufen bringe, möchte ich für alle anderen Browser eine andere Variante der Seite ausgeben.
Da die Seite mit einem Perlscript generiert wird, sollte das kein Problem sein ... dachte ich.

Ich dachte daran, einfach in $ENV{HTTP_USER_AGENT} nach "MSIE" zu suchen. Aber mein Opera stellt sich als "Mozilla/4.0 (compatible; MSIE 5.0; Windows 98) Opera 5.11  [de]" vor, so daß er bei einfacher Suche nach "MSIE" auch für einen solchen gehalten würde.

Ich könnte jetzt natürlich noch darauf achten, das "Opera" nicht in $ENV{HTTP_USER_AGENT} vorkommt, aber gibts da nicht eine bessere und _allgemein gültigere_ Lösung?

Gruß

Rol

  1. Moin,

    gibts da nicht eine bessere und _allgemein gültigere_ Lösung?

    im Sinne deiner Frage - nein. Der User-Agent-Header muss nichtmal gesetzt sein, und darf gelogen sind (und ist es oft auch).
    Eine wirklich allgemeingueltigere Loesung waere, auf das DHTML zu verzichten.

    Viele Gruesse,

    n.d.p.

    1. Eine wirklich allgemeingueltigere Loesung waere, auf das DHTML zu verzichten.

      Da ich mir nur bei IE (nahezu) sicher bin, daß das DHTML funktioniert, möcht ich allen anderen Browsern eine Nicht-DHTML Variante generieren.

      »»Der User-Agent-Header muss nichtmal gesetzt sein, und darf gelogen sind (und ist es oft auch).

      Davon habe ich hier schon oft gelesen. Ist das so zu verstehen, daß (a) sich andere Browser als IE ausgeben oder (b) manche IE sich nicht als IE ausweisen.

      (a) oder ein nicht gesetzter User-Agent-Header wären dann ja o.k., denn dann gibts ja den Nicht DHTML code.

      Für den Rest gäbe es dann den (meiner Ansicht nach den für diesen Zweck besser geeigneten) DHTML Code.

      Gruß

      Rol

      1. Hallo Rol!

        Warum nicht auf die bewährte Abfrage:

        if (document.all) {
        IE-anweisungen; }
        else {
        Anweisungen für andere Browser; }

        vertrauen?

        Ich habe schon mal die tollsten User-Agent erlebt, dieser läßt sich in 2 Angriffen komplett manipulieren:

        http://www.atomic-eggs.com/cgi-bin/MSIE_Brow2.cgi

        Schau Dir mal beispielsweise den letzten Eintrag der Tabelle an ;-)

        Patrick
        <hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>

        1. Warum nicht auf die bewährte Abfrage:

          if (document.all) {
          IE-anweisungen; }
          else {
          Anweisungen für andere Browser; }
          vertrauen?

          Weil das in Perl nicht geht.

          Trotzdem danke,
          CU
          Rol

          1. Re!

            Weil das in Perl nicht geht.

            Logo, damit meinte ich, dass Du die Abfrage eben nicht Serverseitig mit Perl sondern clientseitig mit JavaScript machen solltest... was für ein Vorhaben, in welchem DHTML (also doch JavaScript) vorkommt, eigentlich am logischsten ist.

            Patrick
            <hatehtehpehdoppelpunktslashslashwehwehwehpunktatomicminuseggspunktcomslash>

            1. Logo, damit meinte ich, dass Du die Abfrage eben nicht Serverseitig mit Perl sondern clientseitig mit JavaScript machen solltest... was für ein Vorhaben, in welchem DHTML (also doch JavaScript) vorkommt, eigentlich am logischsten ist.

              Da die HTML Datei sowieso mit einem Perlscript erzeugt wird, hielt ich es für sinnvoll, gleich den passenden HTML code zu generieren, wobei es nicht so schlimm ist wenn ein IE als was anderes erkannt wird. Nur anders herum wäre es fatal.

              MfG Rol

              1. Hi,

                Da die HTML Datei sowieso mit einem Perlscript erzeugt wird,

                ui, Du hast offenbar zu viele Ressourcen frei.

                hielt ich es für sinnvoll, gleich den passenden HTML code zu generieren,

                "Im Prinzip ja."

                Serverseitig hast Du nur leider keine Möglichkeit, auf den Client zu schließen. Clientseitig kannst Du die Daten ermitteln - und wenn Du unbedingt willst, anschließend den Code vom Server generieren lassen. Vorsicht, die Information darf nicht in der URL stehen, da diese erfahrungsgemäß auf andere Systeme übertragen wird, wo sie dann evtl. nicht mehr stimmt.

                Cheatah

  2. Sup!

    Mit Perl kann man sehr gut mit einem LWP::GET jeden denkbaren User-Agent nachmachen...

    Gruesse,

    Bio

    1. Mit Perl kann man sehr gut mit einem LWP::GET jeden denkbaren User-Agent nachmachen...

      Ich weiß, aber mir geht es um "ganz normale Besucher" einer Website.
      Ich weiß auch, daß das ein blöder Ausdruck ist, aber ich denke, du weißt, was ich damit meine.

      Wenn jemand den User-Agent fälscht, wird er sich sicher nicht wunder, wenn "die Website" sich "verkennt".

      Da man aber auf ähnliche Fragen (z.B. auch bezgl. des Referer) immer deutlich gesagt bekommt, das soetwas oft gefälscht wird, kommt mir eine andere Frage:

      Wer fälscht soetwas und zu welchem Zweck ?

      O.k., zum "rumspielen" oder um auszuprobieren, ob man wo reinkommt kann ich das ja noch nachvollziehen.

      Aber sollte man wirklich davon ausgehen, daß Leute auf eine Website kommen um dort z.B. irgendwelche Infos zu finden oder etwas zu kaufen/downloaden und dabei den User-Agent verändern ?

      Würde mich über Meinungen freuen,

      Gruß

      Rol

      1. Hi,

        Wer fälscht soetwas und zu welchem Zweck ?

        manche Webmaster, oder besser gesagt "Webmaster", glauben fälschlicherweise, am User-Agent-String irgendwelche Fähigkeiten des Client erkennen zu können, die sie dann auch noch oft falsch einschätzen, und schließen alles bis auf einige wenige aus. Viele User "alternativer" Browser sind deswegen gezwungen, im User-Agent-String zu lügen, um nicht von Seiteninhalten ausgeschlossen zu werden, an die sie teilweise sogar besser rankommen als IE- und Netscape-User.

        Das ist übrigens einer der Gründe, weswegen sämtliche Browser-Statistiken absolut nutzfrei sind.

        Aber sollte man wirklich davon ausgehen, daß [...] den User-Agent verändern ?

        Du solltest davon ausgehen, daß der User-Agent-String höchstens zufällig stimmt.

        Cheatah

      2. Moin!

        Da man aber auf ähnliche Fragen (z.B. auch bezgl. des Referer) immer deutlich gesagt bekommt, das soetwas oft gefälscht wird, kommt mir eine andere Frage:
        Wer fälscht soetwas und zu welchem Zweck ?

        Da Cheatah noch nicht auf den Referrer eingegangen ist: Die Browser sind hier teilweise etwas zu gespraechig. Aus meiner Sicht als Besucher geht es niemanden etwas an, wo ich mich vorher rumgetrieben habe. Dass ein Webmaster ein statistisches Interesse daran hat, von wo aus zu ihm gelinkt wird, verstehe ich natuerlich, aber kann darauf keine Ruecksicht nehmen. Bei manchen Freehostern kann man Bilder nicht anzeigen, wenn der Referrer nicht mit deren Vorstellungen uebereinstimmt, weshalb man auch keinen direkten Link auf Grafiken dorthin legen kann. Und dann quatscht Netscape leider sehr viele Informationen im Referrer aus, wenn ich von einer Mail aus einen Link oeffne, unter anderem den Absender der Mail. Das muss ich wirklich nicht haben, also ersetze ich den Referrer immer durch die Ziel-URL (dadurch werden die Freehoster dann gleich ueberzeugt, mir die Bilder doch zu zeigen, da sie nun denken, die Grafiken wurden von ihrer eigenen Domain aus verlinkt).

        So long