X-Git-Url: https://git-public.kairo.at/?p=php-utility-classes.git;a=blobdiff_plain;f=include%2Fclasses%2Fuseragent.php-class;h=a78c19052530f4fcca224c15534af521d0ab8d17;hp=b8d83d62ab75abc376b4067d43961d9e0270a94f;hb=a5813ca35f886603ebcba995c1563bc1e751c538;hpb=a8464009aaa1e6f4f3e1125345309e504a121e06 diff --git a/include/classes/useragent.php-class b/include/classes/useragent.php-class index b8d83d6..a78c190 100755 --- a/include/classes/useragent.php-class +++ b/include/classes/useragent.php-class @@ -1,4 +1,40 @@ + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 2 or later (the "GPL"), or + * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + * in which case the provisions of the GPL or the LGPL are applicable instead + * of those above. If you wish to allow use of your version of this file only + * under the terms of either the GPL or the LGPL, and not to allow others to + * use your version of this file under the terms of the MPL, indicate your + * decision by deleting the provisions above and replace them with the notice + * and other provisions required by the GPL or the LGPL. If you do not delete + * the provisions above, a recipient may use your version of this file under + * the terms of any one of the MPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + class userAgent { // userAgent PHP class // get user agent and tell us what Browser is accessing @@ -14,12 +50,17 @@ class userAgent { // the User Agent version // var $bot // bool: true if this agent is a bot + // var $uadata + // array of static user agent data (static vars in functions are set for all objects of this class!) // // function getBrand() // returns the User Agent Brand Name // function getVersion() // returns the User Agent version // + // function getUAString() + // returns the full User Agent string + // // function isbot() // returns true if User Agent seems to be a bot // function isns() @@ -48,14 +89,17 @@ class userAgent { // Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) AppleWebKit/51 (like Gecko) Safari/51 // Lynx/2.8.4rel.1 libwww-FM/2.14 SSL-MM/1.4.1 OpenSSL/0.9.6g // Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-US; rv:1.0.1) Gecko/20021109 Chimera/0.6+ + // Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7b) Gecko/20040302 Camino/0.7+ // Mozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.3a) Gecko/20021207 Phoenix/0.5 // Mozilla/5.0 Galeon/1.2.7 (X11; Linux i686; U;) Gecko/20021204 // Mozilla/4.0 (compatible; MSIE 5.0; Windows XP) Opera 6.05 [ja] // Mozilla/4.0 (compatible; MSIE 5.12; Mac_PowerPC) OmniWeb/4.1.1-v424.6 // Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4b) Gecko/20030516 Mozilla Firebird/0.6 // Mozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1 + // Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7a) Gecko/20040216 Firefox/0.8.0+ // Python-urllib/1.15 // *** search bots: *** + // W3C_Validator/1.305.2.12 libwww-perl/5.64 // Scooter/3.3 // Spinne/2.0 med_AH // Vagabondo/2.0 MT (webagent at wise-guys dot nl) @@ -106,6 +150,7 @@ class userAgent { var $brand; var $version; var $bot = false; + var $uadata = array(); function userAgent($ua_string = "") { // *** constructor *** @@ -135,6 +180,10 @@ class userAgent { $this->brand = "Chimera"; $this->version = $regs[1]; } + elseif (ereg("Camino/([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { + $this->brand = "Camino"; + $this->version = $regs[1]; + } elseif (ereg("Phoenix/([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { $this->brand = "Phoenix"; $this->version = $regs[1]; @@ -143,6 +192,10 @@ class userAgent { $this->brand = "Mozilla Firebird"; $this->version = $regs[1]; } + elseif (ereg("Firefox/([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { + $this->brand = "Firefox"; + $this->version = $regs[1]; + } elseif (ereg("Galeon/([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { $this->brand = "Galeon"; $this->version = $regs[1]; @@ -171,6 +224,11 @@ class userAgent { $this->brand = "AppleWebKit"; $this->version = $regs[1]; } + elseif (ereg("W3C_Validator/([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { + $this->brand = "W3C_Validator"; + $this->version = $regs[1]; + $this->bot = true; + } elseif (ereg("ZyBorg/([0-9a-zA-Z\.+]+)", $this->uastring, $regs)) { $this->brand = "ZyBorg"; $this->version = $regs[1]; @@ -241,7 +299,7 @@ class userAgent { $this->version = ""; $this->bot = true; } - elseif (ereg("^Mozilla", $this->uastring)) { + elseif (ereg("^Mozilla[\s ]*$", $this->uastring)) { $this->brand = "Unknown bot (Mozilla)"; $this->version = ""; $this->bot = true; @@ -327,78 +385,67 @@ class userAgent { function getBrand() { return $this->brand; } function getVersion() { return $this->version; } + function getUAString() { return $this->uastring; } function isbot() { return $this->bot; } function isns() { - // set it static so that we don't have to call it that often - static $is_ns; - if (!isset($is_ns)) { - $is_ns = false; + if (!isset($this->uadata["is_ns"])) { + $this->uadata["is_ns"] = false; if (strstr($this->brand, "Netscape")) { - $is_ns = true; + $this->uadata["is_ns"] = true; } } - return $is_ns; + return $this->uadata["is_ns"]; } function isns4() { - // set it static so that we don't have to call it that often - static $is_ns4; - if (!isset($is_ns4)) { - $is_ns4 = false; + if (!isset($this->uadata["is_ns4"])) { + $this->uadata["is_ns4"] = false; if (strstr($this->brand, "Netscape") && (intval($this->version) == 4)) { - $is_ns4 = true; + $this->uadata["is_ns4"] = true; } } - return $is_ns4; + return $this->uadata["is_ns4"]; } function isie() { - // set it static so that we don't have to call it that often - static $is_ie; - if (!isset($is_ie)) { + if (!isset($this->uadata["is_ie"])) { $is_ie = false; if (strstr($this->brand, "Internet Explorer")) { - $is_ie = true; + $this->uadata["is_ie"] = true; } } - return $is_ie; + return $this->uadata["is_ie"]; } function geckobased() { - // set it static so that we don't have to call it that often - static $is_gecko; - if (!isset($is_gecko)) { - $is_gecko = false; + if (!isset($this->uadata["is_gecko"])) { + $this->uadata["is_gecko"] = false; if (strstr($this->uastring, "Gecko/")) { - $is_gecko = true; + $this->uadata["is_gecko"] = true; } } - return $is_gecko; + return $this->uadata["is_gecko"]; } function geckodate() { - // set it static so that we don't have to call it that often - static $gdate; - if (!isset($gdate)) { - $gdate = 0; + if (!isset($this->uadata["gdate"])) { + $this->uadata["gdate"] = 0; if (ereg("Gecko/([0-9]+)", $this->uastring, $regs)) { - $gdate = $regs[1]; + $this->uadata["gdate"] = $regs[1]; } } - return $gdate; + return $this->uadata["gdate"]; } function khtmlbased() { - // set it static so that we don't have to call it that often - static $is_khtml; - if (!isset($is_khtml)) { - $is_khtml = false; + if (!isset($this->uadata["is_khtml"])) { + $this->uadata["is_khtml"] = false; if (strstr($this->brand, "Konqueror") || strstr($this->brand, "Safari") || strstr($this->brand, "AppleWebKit")) { - $is_khtml = true; + $this->uadata["is_khtml"] = true; } } - return $is_khtml; + return $this->uadata["is_khtml"]; } } ?>