Php : Herausfinden, Chrome und Safari Browsern

Ich folgenden code verwenden, um zu finden, user-agent,

    $user_agent = $_SERVER['HTTP_USER_AGENT']; 
    if (preg_match('/MSIE/i', $user_agent)) { 
       echo "Internet Explorer";
    }
    if (preg_match('/Firefox/i', $user_agent)) { 
       echo "FireFox";
    }
    if (strpos( $user_agent, 'Chrome') !== false)
    {
        echo "Google Chrome";
    }
    if (strpos( $user_agent, 'Safari') !== false)
    {
       echo "Safari";
    }
    if (preg_match('/Opera/i', $user_agent)) { 
       echo "Opera";
    }

    ?>

Aber mein chrome-browser wieder unter useragent plötzlich

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.155 Safari/537.22

Es enthält das Wort safari und chrome.also sowohl im browser als Namen ausgedruckt werden.was ist die Lösung für diese.danke.

  • Die Lösung ist fast immer "Stop sorgen über das, was der browser ist"
  • Ich vermute, es bezieht sich auf die Tatsache, dass beide Browser verwenden die WebKit - layout-engine. Sie sollten look in feature-Erkennung, die als browser-Erkennung ist unzuverlässig. Sollten Sie die Idee von progressive enhancement in dem Sie erstellen die Basis-Funktionalität, die alle Browser nutzen können und erweitern die Funktionalität für Browser, die das unterstützen zusätzliche features (z.B. feature-detection).
  • Follow-up auf @Quentin Kommentar, immer Fragen Sie sich, warum Ihr server muss wissen, was der browser ist. Ich verstehe mit Hilfe von feature-Erkennung auf der client-Seite, aber ich kann nicht verstehen, warum Sie dies wissen müssen auf Ihrem server.
  • hier ist eine Idee ... was ist, wenn Sie wollte, um dynamisch einbinden der javascript, die Sie nur noch ausführen (feature-Erkennung für den Anfang) auf bestimmte Browser? So speichern Sie eine hin-und Rückfahrt, wenn Sie es nicht brauchen (ich meine, die meisten libs lassen Sie das dynamische laden von js sowieso, aber pssssst)
  • Verwenden Sie die feature-Erkennung auf der client-Seite. Wenn es unterstützt wird, dann laden Sie die Bibliothek. Vermeiden Sie die round-trip-es sei denn, Sie brauchen es.
  • ähem, Sie haben vielleicht bemerkt, wo ich sagte, dass die gemeinsame libs würde es Ihnen erlauben, das dynamische laden der js, die Sie wollen, sowieso? Ich habe ausdrücklich entgegen, dass für Sie. Aber bei Gelegenheit, auf erste Anforderung einer Seite, möchten Sie vielleicht schöner sein, um Ihre Kunden, indem Sie nicht fragt, ob Sie herunterladen mehr code als nötig ist, nicht?
  • Ich bemerkte - ich sage nur, dass auch ohne Verwendung von client-Bibliotheken ist es nicht schwer zu implementieren, auf Ihre eigenen. Ich bin für Bandbreite zu sparen, könnte man aber ziemlich leicht zu implementieren, eine init.js - Datei, die nicht feature-Erkennung und lädt den rest des JS von dort. Nur ein Denkanstoß, ich sehe, wo Sie kommen aus, wie ich würde nicht empfehlen, die server-Seite browser-Erkennung. Der einzige echte Fall, ich benutzte es nur, um in eine sessions-Tabelle (rein zu Informationszwecken).
  • Ich habe nie schnüffeln browser die Seite, aber ich habe gesehen, das ASP.NET Rahmen tun. Noch nicht ganz sicher, warum. Ich war nur stechen bei diesem einen.
  • Weil es Microsoft ist. 'nuff said. 🙂

Schreibe einen Kommentar