From: Robert Kaiser Date: Mon, 2 Jul 2007 15:29:23 +0000 (+0200) Subject: correct detection of presto in Opera's Firefox-spoofing UA X-Git-Url: https://git-public.kairo.at/?a=commitdiff_plain;h=c863ed1ed3d36ef7bcf3dcfdb85f8c99b1655ec2;p=php-utility-classes.git correct detection of presto in Opera's Firefox-spoofing UA --- diff --git a/include/classes/useragent.php-class b/include/classes/useragent.php-class index e71505a..eba3ed2 100755 --- a/include/classes/useragent.php-class +++ b/include/classes/useragent.php-class @@ -16,7 +16,7 @@ * * The Initial Developer of the Original Code is * KaiRo - Robert Kaiser. - * Portions created by the Initial Developer are Copyright (C) 2003 + * Portions created by the Initial Developer are Copyright (C) 2003-2007 * the Initial Developer. All Rights Reserved. * * Contributor(s): Robert Kaiser @@ -746,7 +746,7 @@ class userAgent { if (!isset($this->uadata['engine'])) { $this->uadata['engine'] = 'unknown'; $this->uadata['geckodate'] = null; - if (preg_match('|Gecko/([0-9]+)|', $this->uastring, $regs)) { + if (preg_match('|Gecko/([0-9]+)|', $this->uastring, $regs) && (strpos($this->brand, 'Opera') === false)) { $this->uadata['engine'] = 'gecko'; $this->uadata['geckodate'] = $regs[1]; } @@ -956,6 +956,12 @@ class userAgent { $this->uadata['os'] = $regs[1]; $this->uadata['lang'] = $regs[2]; } + // Opera 9 Firefox-spoofing + elseif (preg_match('/Mozilla\/[^\(]+ \((?:X11; )?([^;]+);.+; ([a-z_-]+); rv:([^\);]+)\) Gecko\/\d+ Firefox\/[0-9a-zA-Z\.+]+ Opera [^ ]+/i', $this->uastring, $regs)) { + $this->uadata['eng_version'] = $this->getVersion(); + $this->uadata['os'] = $regs[1]; + $this->uadata['lang'] = $regs[2]; + } } elseif ($this->hasEngine('nscp')) { if (preg_match('/Mozilla\/([0-9a-zA-Z\.+]+) (?:\[([a-z_-]+)\][^\(]+)?\(X11; [^;]+; ([^\)]+)\)/i', $this->uastring, $regs)) {