kostenloser Webspace werbefrei: lima-city


Browsername ohne get_browser()

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    w*****e

    Guten Tag,

    ich möchte gerne den Namen eines Browsers herasufinden. Dies soll mit PHP geschehen. Leider unterstütz mein Webspace-Anbieter die Funktion get_browser() nicht. Dehalb jetzt meine Frage, ob es eine Möglichkeit gibt, den Browser herauszufinden ohne auf jeden Browser einzeln zu prüfen?

    lg

    P.S. Ich weiß, dass man den User-Agent-String leicht manipulieren kann. Dies ist hier jedoch zu venachlässigen.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. ganz einfach

    <?php
        echo $_SERVER['HTTP_USER_AGENT'];
    ?>

    :)
  4. Autor dieses Themas

    w*****e

    Dann habe ich aber den ganzen User-Agent, ich möchte aber nur den Namen, wie zum Beispiel Firefox, Chrome, IE usw.
  5. hmmm, dann musst Du halt im User-Agent String nach typishen Zeichen suchen
    bzw. dir die Funktion getBrowser selber schreiben

    <?php
    // ------------------------------------------------------ 
    
    if (function_exists('getBrowser')) {
    
    function getBrowser()
        {
            $u_agent = $_SERVER['HTTP_USER_AGENT'];
            $ub = '';
            if(preg_match('/MSIE/i',$u_agent))
            {
                $ub = "Internet Explorer";
            }
            elseif(preg_match('/Firefox/i',$u_agent))
            {
                $ub = "Mozilla Firefox";
            }
            elseif(preg_match('/Chrome/i',$u_agent))
            {
                $ub = "Google Chrome";
            }
            elseif(preg_match('/Safari/i',$u_agent))
            {
                $ub = "Apple Safari";
            }
            elseif(preg_match('/Flock/i',$u_agent))
             {
                $ub = "Flock";
            }
            elseif(preg_match('/Opera/i',$u_agent))
            {
                $ub = "Opera";
            }
            elseif(preg_match('/Netscape/i',$u_agent))
            {
                $ub = "Netscape";
            }
            return $ub;
        }
    }
    
    // ------------------------------------------------------ 
    
    $user_browser = getBrowser; 
    
    // ------------------------------------------------------ 
    ?>


    das kann man sicher noch verfeinern, mit Version, etc.

    EDIT: oder schau mal: http://phpsniff.sourceforge.net bzw hier http://sourceforge.net/projects/phpsniff/
    ... eine passende PHP class
    :)


    Beitrag zuletzt geändert: 11.4.2012 16:07:40 von lukepress
  6. Autor dieses Themas

    w*****e

    Gut, auch wenn das heißt, dass ich für jeden Browser den ich haben möchte umschreiben möchte. Vlt fäält mir ja noch was ein das zu vereinfacehn, trotzdem vieln Dank
  7. lukepress schrieb:
    if (function_exists('getBrowser')) {


    das heißt doch:
    if (! function_exists('getBrowser')) {

    Man will die Funktion ja schließlich deklarieren, wenn sie noch nicht existiert.
  8. Autor dieses Themas

    w*****e

    fuerderer schrieb:
    lukepress schrieb:
    if (function_exists('getBrowser')) {


    das heißt doch:
    if (! function_exists('getBrowser')) {

    Man will die Funktion ja schließlich deklarieren, wenn sie noch nicht existiert.


    so und jetzt weise ich euch darauf hin, dass die Funktion immer definiert ist, nur da ich nicht über die PHP.ini Zugriff auf eine browscap.ini habe immer eine Fehlermeldung ausgibt
  9. ups

    ja sorry,
    wenn, dann müsste es natürlich mit dem ! sein ... Wenn NICHT ....

    if (!function_exists('getBrowser')) { ...


    ABER ... da ja ...
    webaffe schrieb:
    so und jetzt weise ich euch darauf hin, dass die Funktion immer definiert ist, nur da ich nicht über die PHP.ini Zugriff auf eine browscap.ini habe immer eine Fehlermeldung ausgibt


    ... der Funktion einen anderen Namen geben, nicht getBrowser() ....

    (jetzt mal mit User-Agent-String ausserhalb der Funktion
    dann kann man auch mit bekannten User-Agent-Strings testen)

    function check_user_browser($u_agent) {
         
         $ub = '';
    
            if(preg_match('/MSIE/i',$u_agent)) {
                $ub = "Internet Explorer";
            }
            elseif(preg_match('/Firefox/i',$u_agent)) {
                $ub = "Mozilla Firefox";
            }
            elseif(preg_match('/Chrome/i',$u_agent)) {
                $ub = "Google Chrome";
            }
            elseif(preg_match('/Safari/i',$u_agent)) {
                $ub = "Apple Safari";
            }
            elseif(preg_match('/Flock/i',$u_agent)) {
                $ub = "Flock";
            }
            elseif(preg_match('/Opera/i',$u_agent)) {
                $ub = "Opera";
            }
            elseif(preg_match('/Netscape/i',$u_agent)) {
                $ub = "Netscape";
            }
    
    return $ub;
    }



    Aufruf:
    (mit User-Agent-String ausserhalb der Funktion
    und als Argument / Parameter übergeben)

    $user_agent = $_SERVER['HTTP_USER_AGENT'];
    
    $user_browser = check_user_browser($user_agent);


    sonst halt mal phpsniff testen: http://phpsniff.sourceforge.net

    :)


    Beitrag zuletzt geändert: 11.4.2012 19:32:22 von lukepress
  10. Autor dieses Themas

    w*****e

    lukepress schrieb:
    ups

    ja sorry,
    wenn, dann müsste es natürlich mit dem ! sein ... Wenn NICHT ....

    if (!function_exists('getBrowser')) { ...


    ABER ... da ja ...
    webaffe schrieb:
    so und jetzt weise ich euch darauf hin, dass die Funktion immer definiert ist, nur da ich nicht über die PHP.ini Zugriff auf eine browscap.ini habe immer eine Fehlermeldung ausgibt


    ... der Funktion einen anderen Namen geben, nicht getBrowser() ....

    (jetzt mal mit User-Agent-String ausserhalb der Funktion
    dann kann man auch mit bekannten User-Agent-Strings testen)

    function check_user_browser($u_agent) {
         
         $ub = '';
    
            if(preg_match('/MSIE/i',$u_agent)) {
                $ub = "Internet Explorer";
            }
            elseif(preg_match('/Firefox/i',$u_agent)) {
                $ub = "Mozilla Firefox";
            }
            elseif(preg_match('/Chrome/i',$u_agent)) {
                $ub = "Google Chrome";
            }
            elseif(preg_match('/Safari/i',$u_agent)) {
                $ub = "Apple Safari";
            }
            elseif(preg_match('/Flock/i',$u_agent)) {
                $ub = "Flock";
            }
            elseif(preg_match('/Opera/i',$u_agent)) {
                $ub = "Opera";
            }
            elseif(preg_match('/Netscape/i',$u_agent)) {
                $ub = "Netscape";
            }
    
    return $ub;
    }



    Aufruf:
    (mit User-Agent-String ausserhalb der Funktion
    und als Argument / Parameter übergeben)

    $user_agent = $_SERVER['HTTP_USER_AGENT'];
    
    $user_browser = check_user_browser($user_agent);


    sonst halt mal phpsniff testen: http://phpsniff.sourceforge.net

    :)


    also wenn ich die Seite mit meinem Browser aufrufe bekomme ich falsche Informationen :) ich nutze Chromium, aber er wird als Safari erkannt
  11. webaffe schrieb:
    also wenn ich die Seite mit meinem Browser aufrufe bekomme ich falsche Informationen :) ich nutze Chromium, aber er wird als Safari erkannt
    dann musst du den preg_match anpassen. Einfach noch einmal den kompletten Usergenten ausgeben lassen und anhand dessen korrigieren.
  12. um den den preg_match anzupassen

    hilft vielleicht das hier: http://www.useragentstring.com/

    Eine Liste mit bekannten User Agent Strings, aber keine Ahnung wie komplett oder wie aktuell das ist

    es gibt auch eine API, mit der man den User_Agent_String übergeben kann
    und dazu als Ergebnis die Informationen zu Typ, Name, Version, etc. bekommt

    Beispiel API Abfrage (Daten in JSON als Ergebnis-Objekt)

    <?php
    // ------------------------------------------------- 
    
    $user_agent = $_SERVER['HTTP_USER_AGENT'];
    
    $ua_string = urlencode($user_agent); 
    
    $ua_call = 'http://www.useragentstring.com/?uas='.$ua_string.'&getJSON=all'; 
    
    $ua_info = file_get_contents($ua_call); 
    
    $ua_data = json_decode($ua_info); 
    
    
    // ------------------------------------------------- 
    
    print '<div style="text-align:left; margin-left:20px;">'."\n";
    
    print '<pre>'."\n";
    print_r($ua_data); 
    print '</pre>'."\n";
    
    print '</div>'."\n";
    
    // ------------------------------------------------- 
    ?>



    Beispiel Ausgabe mit
    $user_agent = 'Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0';

    stdClass Object
    (
        [agent_type] => Browser
        [agent_name] => Firefox
        [agent_version] => 12.0
        [os_type] => Windows
        [os_name] => Windows XP
        [os_versionName] => 
        [os_versionNumber] => 
        [os_producer] => 
        [os_producerURL] => 
        [linux_distibution] => Null
        [agent_language] => 
        [agent_languageTag] => 
    )


    keine Ahnung ob die Anzahl der API-Abfragen (pro Tag) berenzt ist,
    es steht nichts davon auf der Seite (oder ich habs nicht gefunden)

    aber eine gute Möglichkeit, um den Browser-Name herauszufinden,
    ohne selbst den USER_AGENT String mit preg_match() zu prüfen.

    auch als direkte Ausgabe einzelner Objekt-Elemente:

    echo "<p> Browser-Name: ". $ua_data->agent_name ."</p> \n"; 
    echo "<p> Browser-Version: ". $ua_data->agent_version ."</p> \n"; 
    echo "<p> Betriebssystem: ". $ua_data->os_name ."</p> \n";



    kennt jemand noch andere (evtl. bessere) User_Agent Datenbank (mit API) ?




    Beitrag zuletzt geändert: 1.6.2012 13:20:21 von lukepress
  13. webaffe schrieb:
    fuerderer schrieb:
    lukepress schrieb:
    if (function_exists('getBrowser')) {


    das heißt doch:
    if (! function_exists('getBrowser')) {

    Man will die Funktion ja schließlich deklarieren, wenn sie noch nicht existiert.


    so und jetzt weise ich euch darauf hin, dass die Funktion immer definiert ist, nur da ich nicht über die PHP.ini Zugriff auf eine browscap.ini habe immer eine Fehlermeldung ausgibt


    Du brauchst keinen Zugriff auf die php.ini. Siehe https://github.com/garetjax/phpbrowscap
  14. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!