1. #1

    Registriert seit
    24.11.2011
    Beiträge
    207
    Thanked 114 Times in 71 Posts

    Standard Fehler in php Script - auslesen von IP, Browser, OS

    Hey,

    ich habe ein Script gefunden um die IP, Browser und OS auszulesen... Soweit funktioniert das auch aber wenn ich es aufrufe kommt ein Fehler in Line 82 und 123 das eregi veraltet ist, ich hab es dann durch preg_match ersetzt aber das funktionierte auch nicht so ganz also hab ich eregi durch ! stristr ersetzt, dies funktioniert zwar aber zeigt ein komplett falsches OS an, nämlich Linux, bei eregi (was veraltet ist) zeigt es das richtige OS (Windows) an.

    Weiß einer wodurch ich das eregi ersetzen kann, so dass es mir das OS richtig ausgibt?

    Danke

    Spoiler:
    PHP-Code:
    <?php
    /**
      * Browsererkennung
      *
      * @param $user_agent
      * @return Browser und Version
      */
    function get_browser_($user_agent) {
         
    $agent_browser  = array('0' => 'Firefox',
                                 
    '1' => 'Opera',
                                 
    '2' => 'Iceweasel',
                                 
    '3' => 'Thunderbird',
                                 
    '4' => 'NetFront',
                                 
    '5' => 'Phoenix',
                                 
    '6' => 'Sylera',
                                 
    '7' => 'StumbleUpon',
                                 
    '8' => 'Netscape',
                                 
    '9' => 'Wget',
                                 
    '10' => 'Konqueror',
                                 
    '11' => 'K-Meleon',
                                 
    '12' => 'Flock',
                                 
    '13' => 'BonEcho',
                                 
    '14' => 'SeaMonkey',
                                 
    '15' => 'Safari',
                                 
    '16' => 'Chrome',
                                 
    '17' => 'Minefield',
                                 
    '18' => 'GranParadiso',
                                 
    '19' => 'Kazehakase',
                                 
    '20' => 'Dillo',
                                 
    '21' => 'Galeon',
                                 
    '22' => 'Arora',
                                 
    '23' => 'midori'
                                
    );


         for(
    $i 0$i count($agent_browser); $i++) {
             if (
    strstr($_SERVER['HTTP_USER_AGENT'], $agent_browser[$i])) {
                 if (
    strstr($_SERVER['HTTP_USER_AGENT'], 'Version/')) {
                     
    /**
                      * Wirkliche Version von Opera und Safari herausfinden
                      */
                     
    $browser_raw strstr($_SERVER['HTTP_USER_AGENT'], 'Version/');
                     
    $browser_typ explode('/',$browser_raw);
                     
    $browser_ver explode(' '$browser_typ['1']);

                     if (
    strstr($browser_ver['0'], ';')) {
                         
    $browser_ver_new  explode(';'$browser_ver['0']);
                         
    $browser_ver['0'] = $browser_ver_new['0'];
                     }

                     
    $browsers = array($agent_browser[$i] . ' ' $browser_ver['0'] => $agent_browser[$i]);
                 } else {
                     
    $browser_raw strstr($_SERVER['HTTP_USER_AGENT'], $agent_browser[$i]);
                     
    $browser_typ explode('/',$browser_raw);
                     
    $browser_ver explode(' '$browser_typ['1']);

                     if (
    strstr($browser_ver['0'], ';')) {
                         
    $browser_ver_new  explode(';'$browser_ver['0']);
                         
    $browser_ver['0'] = $browser_ver_new['0'];
                     }

                     
    $browsers = array(ucfirst($browser_typ['0']) . ' ' $browser_ver['0'] => $agent_browser[$i]);
                 }
             }

             if (!isset(
    $browsers)) {
                 
    $browsers = array('Mozilla'=>'Gecko',
                                   
    'MyIE'=>'MyIE',
                                   
    'Lynx' => 'Lynx',
                                   
    'Netscape' => '(Mozilla/4\.75)|(Netscape6)|(Mozilla/4\.08)|(Mozilla/4\.5)|(Mozilla/4\.6)|(Mozilla/4\.79)',
                                   
    'SearchBot' => '(nuhk)|(Googlebot)|(Yammybot)|(Openbot)|(Slurp/cat)|(msnbot)|(ia_archiver)',
                                   
    'Internet Explorer 8' => '(MSIE 8\.[0-9]+)',
                                   
    'Internet Explorer 7' => '(MSIE 7\.[0-9]+)',
                                   
    'Internet Explorer 6' => '(MSIE 6\.[0-9]+)',
                                   
    'Internet Explorer 5' => '(MSIE 5\.[0-9]+)',
                                   
    'Internet Explorer 4' => '(MSIE 4\.[0-9]+)',
                                  );
             }
         }

         foreach(
    $browsers as $browser=>$pattern_browser) {
             if (
    eregi($pattern_browser$user_agent)) {
                 return 
    trim($browser);
             }
         }

         return 
    'Unbekannter Browser';
    }

    /**
      * Betriebssystemerkennung
      *
      * @param $user_agent
      * @return Betiebssystem
      */
    function get_os_($user_agent) {
         
    $os = array('Gentoo Linux' => '[Gg]entoo',
                     
    'Ubuntu Linux' => '[Uu]buntu',
                     
    'RedHat Linux' => 'RedHat',
                     
    'Debian Linux' => 'Debian',
                     
    'Fedora Linux' => 'Fedora',
                     
    'Mandriva Linux' => 'Mandriva',
                     
    'SuSe Linux' => 'SUSE',
                     
    'Linux' => 'Linux',
                     
    'Symbian' => 'SymbianOS',
                     
    'Windows 95' => '(Windows 95)',
                     
    'Windows 98' => '(Windows 98) | (Win98)',
                     
    'Windows ME' =>'(Win 9x 4.90)',
                     
    'Windows NT 4.0' => '(WinNT4\.0) | (WinNT) | (Windows NT 4\.0)',
                     
    'Windows 2000' => '(Windows NT 5\.0) | (Windows 2000)',
                     
    'Windows XP' => '(Windows NT 5\.1)',
                     
    'Windows .Net Server' => '(Windows NT 5\.2)',
                     
    'Windows Vista' => '(Windows NT 6\.0)',
                     
    'Windows 7' => '(Windows NT 6\.1)',
                     
    'Windows 8' => '(Windows NT 6\.2)',
                     
    'Windows' => 'Windows',
                     
    'MacOS X' => '(Mac OS X)',
                     
    'MacOS' => '(Mac OS)',
                     
    'Unix' => 'Unix',
                    );

         foreach(
    $os as $os=>$pattern_os) {
              if (
    eregi($pattern_os$user_agent)) {
                 return 
    $os;
             }
         }

         return 
    'Unbekanntes Betriebssystem';
    }

    /**
      * IP eines Webseitenbesuchers herausfinden
      *
      * @return IP des Besuchers
      */
    function get_ip_() {
         
    /**
          * wenn der User ueber nen Proxy in's Internet geht,
          * muss die IP so "geholt" werden...
          */
         
    if(getenv('HTTP_X_FORWARDED_FOR')) {
             
    $ip getenv('HTTP_X_FORWARDED_FOR');
         } else {
             
    /**
              * ansonsten so...
              */
             
    $ip getenv('REMOTE_ADDR');
         }

         return 
    $ip;
    }

    $user_agent             $_SERVER['HTTP_USER_AGENT'];
    $browser                get_browser_($user_agent);
    $os                     get_os_($user_agent);
    $ip                     get_ip_();

    echo 
    $browser '<br />' $os '<br />' $ip;
    ?>
    Geändert von Suchty (05.07.2013 um 14:31 Uhr)

    Kontakt:
    Kein Anschluss unter diesem Nick!

  2. #2
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    8.141
    Thanked 9.418 Times in 3.254 Posts
    Blog Entries
    5

    Standard AW: Fehler in php Script - auslesen von IP, Browser, OS

    stristr kann schon mal rein logisch nicht funktionieren, weil das Reguläre Ausdrücke sind die stristr nicht als Suchstring akzeptiert.
    preg_match wird keine Ergebnisse liefern weil kein Delimiter vorhanden ist, wobei das ne Warnung geben müsste sofern du die nicht in der php.ini deaktiviert hast.
    Am einfachsten fügst du einfach beim Aufruf der Funktion jeweils vor- und nach dem Pattern einen ein, zb

    PHP-Code:
    if(preg_match("#" $pattern_browser "#"$user_agent)) {  
         return 
    trim($browser);



  3. The Following User Says Thank You to DMW007 For This Useful Post:

    Suchty (05.07.2013)

  4. #3

    Registriert seit
    24.11.2011
    Beiträge
    207
    Thanked 114 Times in 71 Posts

    Standard AW: Fehler in php Script - auslesen von IP, Browser, OS

    Vielen Dank DMW007 so wie du es geschrieben hast hat es nun funktioniert

    Kontakt:
    Kein Anschluss unter diesem Nick!

Ähnliche Themen

  1. Guten Browser
    Von Luii im Forum Internet und Technik
    Antworten: 11
    Letzter Beitrag: 15.08.2013, 15:37
  2. Win7 Browser stürzen immer ab
    Von Sinan im Forum Windows
    Antworten: 11
    Letzter Beitrag: 10.07.2013, 15:38
  3. Browser: Eure Erweiterungen
    Von patlux im Forum Software
    Antworten: 10
    Letzter Beitrag: 09.06.2012, 15:28
  4. Browser Games
    Von ShinjiKagawa im Forum Sonstige Games
    Antworten: 6
    Letzter Beitrag: 08.05.2012, 14:27
  5. [Shell Script]Upload Script (7z & ncftp)
    Von Sq252 im Forum Showroom
    Antworten: 0
    Letzter Beitrag: 08.01.2012, 18:12
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.