# function: detects browsers and more # homepage: http://compukid.no-ip.org/dev/ # version: 2.4 # contributors: # sebas@vizzzion.com (OO stuff, test() method, windows languange detection) # people posting in http://gathering.tweakers.net/forum/list_messages/631952/ # Copyright (C) 2003 Daniel van Eeden # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA class Browser { var $os; // Operating System (Linux, Solaris, Windows) var $arch; // Architecure (i386, PPC) var $browser; var $browser_ver; // Browser version var $browser_subver; // Browser subversion var $browser_sup; var $lang; // language (en_US, nl_NL, ru_RU) var $encryption; // SSL encryption var $agentstring; // HTTP useragent string var $http_lang; // HTTP accept language var $remote_ip; var $render_eng; // render engine (Gecko, KHTML) var $render_eng_ver; // render engine version var $moz_release; // mozilla release function Browser() { global $teststring; if ($teststring != "" ) { $agentstring = $teststring; $testwarn = "yes"; } else { $agentstring = $_SERVER['HTTP_USER_AGENT']; } $http_lang = $_SERVER['HTTP_ACCEPT_LANGUAGE']; # get some values from the $HTTP_USER_AGENT variables $luser_agent0=explode("(",$agentstring); $luser_agent1=explode(")",$luser_agent0[1]); $luser_agent2=explode(";",$luser_agent1[0]); // for debugging purpose // print $luser_agent0[0] . ' | ' . $luser_agent1[0] . ' | ' . $luser_agent2[0]; $chkvers=explode("/",$luser_agent0[0]); $ns4_minvers=explode(".",$chkvers[1]); $moz_extra_ver=explode(" ",$agentstring); $moz_extra_ver1=explode("/",$moz_extra_ver[8]); $moz_extra_ver2=explode("/",$moz_extra_ver[7]); $moz_extra_ver3=explode("/",$moz_extra_ver[6]); $moz_extra_ver4=explode("/",$moz_extra_ver[5]); $moz_rv=explode(":",$luser_agent2[4]); # Which operating systems do we want to detect? # How do we want to call them? $det_os = array ( array("Linux","Linux"), // Some prefer "GNU/Linux" array("FreeBSD","FreeBSD"), array("OpenBSD","OpenBSD"), array("NetBSD","NetBSD"), array("Windows 2000","Windows","2000","Microsoft"), array("Windows NT 5.0","Windows","2000","Microsoft"), array("Windows NT 5.1","Windows","XP","Microsoft"), array("Windows NT 5.2","Windows","2003","Microsoft"), array("Windows NT","Windows","NT 4.0","Microsoft"), array("Windows XP","Windows","XP","Microsoft"), array("Windows 95","Windows","95","Microsoft"), array("Windows 98","Windows","98","Microsoft"), array("Windows ME","Windows","ME","Microsoft"), array("WinNT4.0","Windows","NT 4.0","Microsoft"), array("Win98","Windows","98","Microsoft"), array("Win95","Windows","95","Microsoft"), array("mac os x","MacOS","X","Apple"), array("Mac OS X","MacOS","X","Apple"), array("MacOS X","MacOS","X","Apple"), array("Mac_PowerPC","MacOS","","Apple"), array("Macintosh","MacOS","","Apple"), array("macintosh","MacOS","","Apple"), array("OS/2","OS/2","","IBM"), array("SunOS 5.7","Solaris","5.7","Sun"), array("SunOS 5.8","Solaris","5.8","Sun"), array("SunOS 5.9","Solaris","5.9","Sun"), array("SunOS","Solaris","","Sun"), array("AIX","AIX","","IBM"), array("HP-UX","HP-UX","","HP"), array("IRIX","IRIX","","Sgi"), array("BeOS","BeOS","","Be"), array("Unix","UNIX","",""), array("UNIX","UNIX","",""), array("unix_sv","UNIX","","SCO"), array("X11","UNIX","","") ); # wich architectures do we like to detect? $det_arch[0][0]="i386"; $det_arch[0][1]="i386"; $det_arch[1][0]="i486"; $det_arch[1][1]="i486"; $det_arch[2][0]="i586"; $det_arch[2][1]="i586"; $det_arch[3][0]="i686"; $det_arch[3][1]="i686"; $det_arch[4][0]="PPC"; $det_arch[4][1]="PowerPC"; $det_arch[5][0]="sun4u"; $det_arch[5][1]="UltraSPARC"; $det_arch[6][0]="sun4m"; $det_arch[6][1]="MicroSPARC"; $det_arch[7][0]="PPC64"; $det_arch[7][1]="PowerPC64"; $det_arch[7][0]="ARM"; $det_arch[7][1]="ARM"; $det_arch[7][0]="IA64"; $det_arch[7][1]="Itanium"; $det_arch[7][0]="x86-64"; $det_arch[7][1]="x86-64"; $det_arch[7][0]="PA-RISC"; $det_arch[7][1]="PA-RISC"; $det_arch[7][0]="Alpha"; $det_arch[7][1]="Alpha"; $det_arch[8][0]="ppc"; // used by Safari $det_arch[8][1]="PowerPC"; $det_arch[9][0]="r4000"; $det_arch[9][1]="MIPS"; $det_arch[10][0]="sparc64"; $det_arch[10][1]="UltraSPARC"; $det_arch[11][0]="9000"; $det_arch[11][1]="PA-RISC"; $det_arch[12][0]="Mac_PowerPC"; $det_arch[12][1]="PowerPC"; ##################### ##### FUNCTIONS ##### ##################### # function to give the $arch variable the right string. # $arg1 is where to look. # $arg2 is the list we want to search with. function testarch ($arg1,$arg2) { for ($i = 0; $i <= sizeof($arg2); $i++){ if ((strpos($arg1,$arg2[$i][0])) || ($arg1 == $arg2[$i][0])){ $arch=$arg2[$i][1]; return $arch; } } } # function to give the $os variable the right string. # $arg1 is where to look. # $arg2 is the list we want to search with. function testos ($arg1,$arg2) { for ($i = 0; $i <= sizeof($arg2); $i++){ if ((strpos($arg1,$arg2[$i][0])) || ($arg1 == $arg2[$i][0])){ $os=$arg2[$i][1]; if ($arg2[$i][2] != ""){ $os_ver=$arg2[$i][2]; } if ($arg2[$i][3] != ""){ $os_vendor=$arg2[$i][3]; } return array($os,$os_ver,$os_vendor); } } } # function to give the $encryption variable the right string. # $arg1 is where to look function testencryption ($arg1) { switch ($arg1) { case " I": $encryption="weak"; return($encryption); case " U": $encryption="strong"; return($encryption); } } ######################### ##### detect Safari ##### ######################### $safari_ver=explode("/",$moz_extra_ver[11]); $safari_ver1=explode("/",$moz_extra_ver[12]); if (($safari_ver[0] == "safari") || ($safari_ver1[0] == "Safari")){ $browser="Safari"; $browser_ver=$safari_ver[1]; if ($browser_ver == NULL) $browser_ver=$safari_ver1[1]; $arch=testarch($moz_extra_ver[3],$det_arch); if ($arch == NULL) $arch=testarch($moz_extra_ver[2],$det_arch); $os=testos($luser_agent2[2],$det_os); $render_eng="KHTML"; $encryption=testencryption($luser_agent2[1]); ################################################# ##### detect Mozilla, Netscape6+ or Phoenix ##### ################################################# } elseif (($chkvers[0] == "Mozilla") && ($chkvers[1] == "5.0 ") && ($luser_agent2[0] != "compatible") && ($moz_extra_ver3[0] != "Galeon")){ # Firebird detection $fbird_extra_ver1=explode("/",$moz_extra_ver[10]); if ($fbird_extra_ver1[0] == "Firebird") { $browser = "Firebird"; $browser_ver = $fbird_extra_ver1[1]; $render_eng = $moz_extra_ver1[0]; $render_eng_ver = $moz_extra_ver1[1]; } # Phoenix detection $phoenix_extra_ver1=explode("/",$moz_extra_ver[9]); if ($phoenix_extra_ver1[0] == "Phoenix") { $browser = "Phoenix"; $browser_ver = $phoenix_extra_ver1[1]; $render_eng = $moz_extra_ver1[0]; $render_eng_ver = $moz_extra_ver1[1]; } # give the $os variable the right string. $os=testos($luser_agent2[2],$det_os); if (($os == NULL) && ($luser_agent2[0] == "Macintosh")){ $os[0]="MacOS"; } # give the $arch variable the right string. $arch=testarch($luser_agent2[2],$det_arch); # Detect Netscape and Phoenix switch ($moz_extra_ver1[0]) { case "Netscape": $browser="Netscape"; $browser_ver=$moz_extra_ver1[1]; $moz_release=$moz_rv[1]; break; case "Netscape6": $browser="Netscape"; $browser_ver=$moz_extra_ver1[1]; $moz_release=$moz_rv[1]; break; case "Phoenix": $browser="Phoenix"; $browser_ver=$moz_extra_ver1[1]; $moz_release=$moz_rv[1]; break; default:case "Netscape": $browser="Netscape"; $browser_ver=$moz_extra_ver1[1]; $moz_release=$moz_rv[1]; break; case "Netscape6": $browser="Netscape"; $browser_ver=$moz_extra_ver1[1]; $moz_release=$moz_rv[1]; break; case "Epiphany": $browser="Epiphany"; $browser_ver=$moz_extra_ver1[1]; $moz_release=$moz_rv[1]; break; default: switch ($moz_extra_ver2[0]) { case "Netscape": $browser="Netscape"; $browser_ver=$moz_extra_ver2[1]; $moz_release=$moz_rv[1]; break; case "Netscape6": $browser="Netscape"; $browser_ver=$moz_extra_ver2[1]; $moz_release=$moz_rv[1]; break; case "Phoenix": $browser="Phoenix"; $browser_ver=$moz_extra_ver2[1]; $moz_release=$moz_rv[1]; break; default: if ($browser == "") { $browser="Mozilla"; $browser_ver=$moz_rv[1]; } $moz_release=$moz_rv[1]; } } if ($moz_extra_ver1[0] == "Debian") { $os[2]="Debian"; $browser_subver1=explode("-",$moz_extra_ver1[1]); $browser_subver=$browser_subver1[1]; $browser_sup="Debian"; } # give the $render_eng variable the right string. if ($moz_extra_ver3[0] == "Gecko") { $render_eng="Gecko"; $render_eng_ver=$moz_extra_ver3[1]; } if ($moz_extra_ver2[0] == "Gecko") { $render_eng="Gecko"; $render_eng_ver=$moz_extra_ver2[1]; } if ($moz_extra_ver1[0] == "Gecko") { $render_eng="Gecko"; $render_eng_ver=$moz_extra_ver1[1]; } # give the $encryption the right string. $encryption=testencryption($luser_agent2[1]); # give the $lang array the right strings. $lang1=explode("-",$luser_agent2[3]); $lang[0]=$lang1[0]; if ($lang1[1] != NULL) $lang[1]=$lang1[1]; if (strpos($agentstring,"Opera")){ $browser="Opera"; $render_eng="Opera"; $arch=testarch($luser_agent2[0],$det_arch); $browser_ver=$moz_extra_ver[6]; $render_eng_ver=$moz_extra_ver[6]; $os=testos($luser_agent2[0],$det_os); } } ##################################################################### ##### detect Microsoft Internet Explorer and Opera in MSIE mode ##### ##################################################################### elseif (($chkvers[0] == "Mozilla") && ($chkvers[1] == "4.0 ") && ($luser_agent2[0] == "compatible") && (strpos($luser_agent2[1],"MSIE"))){ # detect Opera in MSIE mode if (strpos($agentstring,"Opera")){ $browser="Opera"; $arch=testarch($luser_agent2[2],$det_arch); $os=testos($luser_agent2[2],$det_os); if ($os == NULL) { $os=testos($luser_agent2[3],$det_os); } $render_eng="Opera"; if ($moz_extra_ver[9] != "Opera") { if ($moz_extra_ver[9] != "") { if ($moz_extra_ver[6] == "Opera") { $render_eng_ver=$moz_extra_ver[7]; $browser_ver=$moz_extra_ver[7]; } else { $render_eng_ver=$moz_extra_ver[9]; $browser_ver=$moz_extra_ver[9]; } } else { if ($moz_extra_ver[5] == "Opera") { $render_eng_ver=$moz_extra_ver[6]; $browser_ver=$moz_extra_ver[6]; } else { $render_eng_ver=$moz_extra_ver[8]; $browser_ver=$moz_extra_ver[8]; } } } else { $render_eng_ver=$moz_extra_ver[10]; $browser_ver=$moz_extra_ver[10]; } } else { $browser="Internet Explorer"; $render_eng="MSIE"; $msie_ver=explode(" ",$luser_agent2[1]); $render_eng_ver=$msie_ver[2]; $browser_ver=$msie_ver[2]; $arch=testarch($luser_agent2[2],$det_arch); // in case of MacOS if ($moz_rv[0] == " TUCOWS"){ $browser_sup="Tucows"; } if ($moz_extra_ver[4] == "AOL") { $browser_sup="AOL"; } switch ($moz_extra_ver[6]) { case "AT&T": $browser_sup="AT&T"; break; case "Crazy": $browser="Crazy Browser"; $crazy_ver=explode(")",$moz_extra_ver[8]); $browser_ver=$crazy_ver[0]; break; case "Avant": $browser="Avant Browser"; $browser_ver=NULL; break; } switch ($moz_extra_ver[7]) { case "NetCaptor": $browser="NetCaptor"; $netcap_ver=explode(")",$moz_extra_ver[8]); $browser_ver=$netcap_ver[0]; break; case "{Tiscali})": $browser_sup="Tiscali"; break; case "Feedreader;": $browser="Feedreader"; $browser_ver=NULL; break; case "Avant": $browser="Avant Browser"; $browser_ver=NULL; break; case "MyIE2;": $browser="MyIE"; $browser_ver="2"; break; case "MyIE2)": $browser="MyIE"; $browser_ver="2"; break; case "BurntMail": $browser="BurntMail"; $browser_ver=$moz_extra_ver[9]; break; case "PCnet": $browser_sup="PCnet"; break; case "FTDv3": $browser="FTD"; $browser_ver="3"; break; } switch ($moz_extra_ver[8]) { case "Wanadoo;"; $browser_sup="Wanadoo"; } # give the $os variable the right string. $os=testos($luser_agent2[2],$det_os); # detect the os if MSN or Compuserve is used. if ($os[0] == NULL) $os=testos($luser_agent2[3],$det_os); } ############################ ##### detect konqueror ##### ############################ } elseif (($chkvers[0] == "Mozilla") && ($chkvers[1] == "5.0 ") && ($luser_agent2[0] == "compatible")){ $konq_vers=explode("/",$luser_agent2[1]); if ($konq_vers[0] == " Konqueror") { $browser="Konqueror"; $browser_ver=$konq_vers[1]; $render_eng="KHTML"; $os=testos($luser_agent2[2],$det_os); # Konqueror shows the kernel version, use it! # probaly also usable for FreeBSD? if (($os[0]=="Linux") || ($os[0]=="FreeBSD")){ $konq_os=explode(" ",$luser_agent2[2]); $os[1]=$konq_os[2]; if (strpos($konq_os[2],"gentoo")){ $os[2]="Gentoo"; } } # give the $arch variable the right string. $arch=testarch($luser_agent2[4],$det_arch); # give the $lang array the right strings. $lang1=explode("-",$luser_agent2[5]); $lang2=explode(",",$lang1[0]); $lang3=explode("_",$lang2[0]); $lang[0]=$lang3[0]; if ($lang3[1] != NULL) $lang[1]=$lang3[1]; } else { $browser="Mozilla 5.0 compatible"; } ############################### ##### detect netscape 3.x ##### ############################### } elseif (($chkvers[0] == "Mozilla") && ($ns4_minvers[0] == "3") && ($ns4_minvers[1] != "0 ")){ $browser="Netscape"; $render_eng="Netscape"; $ns3_minvers1=explode(" ",$ns4_minvers[1]); $browser_ver="3.$ns3_minvers1[0]"; $render_eng_ver="3.$ns3_minvers1[0]"; $encryption=testencryption($luser_agent2[1]); $os=testos($luser_agent2[2],$det_os); $os[1]=$moz_extra_ver[4]; $arch=testarch($luser_agent2[2],$det_arch); ############################### ##### detect netscape 4.x ##### ############################### } elseif (($chkvers[0] == "Mozilla") && ($ns4_minvers[0] == "4") && ($ns4_minvers[1] != "0 ")){ $ns4_minvers1=explode(" ",$ns4_minvers[1]); if ($moz_extra_ver[6] == "BrowseX") { $browser="BrowseX"; $browsex_ver=explode(" ",$luser_agent0[2]); $browser_ver=$browsex_ver[0]; $os=testos($luser_agent0[2],$det_os); $browsex_os_ver=explode(")",$moz_extra_ver[9]); $os[1]=$browsex_os_ver[0]; } else { $browser="Netscape"; $browser_ver="4.$ns4_minvers1[0]"; $arch=testarch($luser_agent2[2],$det_arch); $os=testos($luser_agent2[2],$det_os); } $render_eng=$browser; $render_eng_ver=$browser_ver; $encryption=testencryption($luser_agent2[1]); if ($os[0] == NULL) $os=testos($luser_agent2[0],$det_os); # detect the language... if ($http_lang == "") { $ns4_lang[0]="[en]"; $ns4_lang[1]="[nl]"; for ($i =0; $i <= sizeof($ns4_lang); $i++){ if (strpos($agentstring,$ns4_lang[$i])){ $lang[0]=$ns4_lang[$i]; } } } if (strpos($agentstring,"Opera")) { $browser="Opera"; $arch=testarch($luser_agent2[0],$det_arch); } ############################# ##### detect old galeon ##### ############################# } elseif (($chkvers[0] == "Mozilla") && ($chkvers[1] == "5.0 Galeon")){ $browser="Galeon"; $browser_ver=$chkvers[2]; $os=testos($luser_agent2[1],$det_os); $arch=testarch($luser_agent2[1],$det_arch); $encryption=testencryption($luser_agent2[2]); $gal_extra_ver=explode(" ",$agentstring); $gal_extra_ver1=explode("/",$gal_extra_ver[7]); $render_eng=$moz_extra_ver3[0]; $render_eng_ver=$moz_extra_ver3[1]; if ($gal_extra_ver1[0] == "Debian"){ $os[2]="Debian"; $browser_sup="Debian"; $browser_subver1=explode("-",$moz_extra_ver2[1]); $browser_subver=$browser_subver1[1]; } ############################# ##### detect new galeon ##### ############################# } elseif ($moz_extra_ver3[0] == "Galeon") { $browser ="Galeon"; $browser_ver=$moz_extra_ver3[1]; $os[0]=$moz_extra_ver[3]; $render_eng=$moz_extra_ver4[0]; $render_eng_ver=$moz_extra_ver4[1]; $os=testos($luser_agent2[2],$det_os); $arch=testarch($luser_agent2[2],$det_arch); $encryption=testencryption($luser_agent2[1]); if ($moz_extra_ver2[0] == "Debian") { $os[2]="Debian"; $browser_sup="Debian"; $browser_subver1=explode("-",$moz_extra_ver2[1]); $browser_subver=$browser_subver1[1]; } ####################### ##### detect Lynx ##### ####################### } elseif ($chkvers[0] == "Lynx") { $browser="Lynx"; $render_eng="Lynx"; $lynx_ver=explode(" ",$chkvers[1]); $browser_ver=$lynx_ver[0]; $render_eng_ver=$lynx_ver[0]; ################################### ##### detect Links and ELinks ##### ################################### } elseif (($chkvers[0] == "Links ") || ($chkvers[0] == "ELinks ")) { switch ($chkvers[0]) { case "Links ": $browser="Links"; $render_eng="Links"; break; case "ELinks ": $browser="ELinks"; $render_eng="ELinks"; break; } $browser_ver=$luser_agent2[0]; $render_eng_ver=$luser_agent2[0]; $arch=testarch($luser_agent2[1],$det_arch); $links_os=explode(" ",$luser_agent2[1]); $os[0]=$links_os[1]; $os[1]=$links_os[2]; ####################### ##### detect java ##### ####################### } elseif ($chkvers[0] == "Java") { $browser="Java"; $browser_ver=$chkvers[1]; $render_eng="Java"; $render_eng_ver=$chkvers[1]; ###################### ##### detect w3m ##### ###################### } elseif ($chkvers[0] == "w3m") { $browser="w3m"; $render_eng="w3m"; $browser_ver=$chkvers[1]; $render_eng_ver=$chkvers[1]; ############################## ##### detect NCSA Mosaic ##### ############################## } elseif (($chkvers[0] == "ncsa mosaic") || ($chkvers[0] == "NCSA_Mosaic")) { $browser="NCSA Mosaic"; $render_eng="mosaic"; $mosaic_ver=explode(" ",$chkvers[1]); $browser_ver=$mosaic_ver[0]; $render_eng_ver=$mosaic_ver[0]; $browser_sup="NCSA"; $arch=testarch($luser_agent2[1],$det_arch); $mosaic_os=explode(" ",$luser_agent2[1]); $os=testos($mosaic_os[0],$det_os); $os[1]=$mosaic_os[1]; ####################################### ##### detect opera in native mode ##### ####################################### } elseif ($chkvers[0] == "Opera") { $browser="Opera"; $render_eng="Opera"; $opera_browser_ver=explode(" ",$chkvers[1]); $browser_ver=$opera_browser_ver[0]; $render_eng_ver=$opera_browser_ver[0]; $arch=testarch($luser_agent2[0],$det_arch); $os=testos($luser_agent2[0],$det_os); if ($os[0] == "") { $os=testos($moz_extra_ver[1],$det_os); if ($os[0] == "Linux") { $os[1] = $moz_extra_ver[2]; } } $encryption=testencryption($luser_agent2[1]); ######################## ##### detect fetch ##### ######################## } elseif ($moz_extra_ver[0] == "fetch") { $browser=$moz_extra_ver[0]; $render_eng=$moz_extra_ver[0]; $else_browser_ver=explode(" ",$chkvers[1]); $browser_ver=$else_browser_ver[0]; $render_eng_ver=$else_browser_ver[0]; ######################## ##### detect other ##### ######################## } else { $browser=$chkvers[0]; $render_eng=$chkvers[0]; $else_browser_ver=explode(" ",$chkvers[1]); $browser_ver=$else_browser_ver[0]; $render_eng_ver=$else_browser_ver[0]; } ###################################################### ##### detect language using HTTP_ACCEPT_LANGUAGE ##### ###################################################### # Windows seems to send a different HTTP_USER_AGENT, language detection does not work # this code should workaround this, as IE sends HTTP_ACCEPT_LANGUAGE # also useable for Lynx and w3m if (($lang[0] == '') AND ($http_lang != '')) { $lang[0] = substr($http_lang, 0, 2); // $lang[0] = $http_lang; // this should return 'en-us' e.g. $tmp = substr($http_lang, 3, 2); // this only gives 'en' e.g. if ($tmp = "q=") $tmp=""; if ($lang[1] == '') { $lang[1] = $tmp; } } // remote ip $this -> remote_ip = $_SERVER["REMOTE_ADDR"]; $remote_ip = $this -> remote_ip; ##################################################### ##### If they're not detected, they're unknown. ##### ##################################################### if ($browser == NULL) $browser="unknown"; if ($browser_ver == NULL) $browser_ver="unknown"; if ($browser_subver == NULL) $browser_subver="unknown"; if ($browser_sup == NULL) $browser_sup="unknown"; if ($encryption == NULL) $encryption="unknown"; if ($os[0] == NULL) $os[0]="unknown"; if ($os[1] == NULL) $os[1]="unknown"; if ($os[2] == NULL) $os[2]="unknown"; if ($lang[0] == NULL) $lang[0]="unknown"; if ($lang[1] == NULL) $lang[1]="unknown"; if ($arch == NULL) $arch="unknown"; if ($agentstring == NULL) $agentstring="unknown"; if ($remote_ip == NULL) $remote_ip="unknown"; if ($render_eng == NULL) $render_eng="unknown"; if ($render_eng_ver == NULL) $render_eng_ver="unknown"; if ($moz_release == NULL ) $moz_release="unknown"; ######################################## ##### put results into member vars ##### ######################################## $this -> arch = $arch; $this -> os = $os[0]; $this -> os_ver = $os[1]; $this -> os_vendor = $os[2]; $this -> browser = $browser; $this -> browser_ver = $browser_ver; $this -> browser_subver = $browser_subver; $this -> browser_sup = $browser_sup; $this -> lang = $lang[0]; $this -> sub_lang = $lang[1]; $this -> encryption = $encryption; $this -> agentstring = $agentstring; $this -> http_lang = $http_lang; $this -> remote_ip = $remote_ip; $this -> render_eng = $render_eng; $this -> render_eng_ver = $render_eng_ver; $this -> moz_release = $moz_release; # for debugging only # DO NOT use these $this -> moz_extra_ver = $moz_extra_ver; $this -> moz_extra_ver1 = $moz_extra_ver1; $this -> moz_extra_ver2 = $moz_extra_ver2; $this -> moz_extra_ver3 = $moz_extra_ver3; $this -> moz_extra_ver4 = $moz_extra_ver4; $this -> moz_rv = $moz_rv; $this -> chkvers = $chkvers; $this -> luser_agent0 = $luser_agent0; $this -> luser_agent1 = $luser_agent1; $this -> luser_agent2 = $luser_agent2; $this -> testwarn = $testwarn; } ################### ##### logging ##### ################### function logger($datafile) { $testwarn = $this -> testwarn; $agentstring = $this -> agentstring; # read the file $newfile = fopen($datafile,"r"); $content = fread($newfile,filesize($datafile)); fclose($newfile); # is it already in the db? $lines = explode("\n%",$content); for ($key=0;$key".$lines[$key]."
\n"; } else { // for rootdocs without questions (like index.php) echo "".$lines[$key]."
\n"; } } } ########################## ##### debug function ##### ########################## function debug() { $chkvers = $this -> chkvers; $luser_agent0 = $this -> luser_agent0; $luser_agent1 = $this -> luser_agent1; $luser_agent2 = $this -> luser_agent2; $moz_extra_ver = $this -> moz_extra_ver; $moz_extra_ver1 = $this -> moz_extra_ver1; $moz_extra_ver2 = $this -> moz_extra_ver2; $moz_extra_ver3 = $this -> moz_extra_ver3; $moz_extra_ver4 = $this -> moz_extra_ver4; $moz_rv = $this -> moz_rv; echo ""; for ($i = 0; $i <= sizeof($luser_agent0); $i++){ echo ""; } for ($i = 0; $i <= sizeof($luser_agent1); $i++){ echo ""; } for ($i = 0; $i <= sizeof($luser_agent2); $i++){ echo ""; } for ($i = 0; $i <= sizeof($chkvers); $i++){ echo ""; } for ($i = 0; $i <= sizeof($moz_extra_ver); $i++){ echo ""; } for ($i = 0; $i <= sizeof($moz_extra_ver1); $i++){ echo ""; } for ($i = 0; $i <= sizeof($moz_extra_ver2); $i++){ echo ""; } for ($i = 0; $i <= sizeof($moz_extra_ver3); $i++){ echo ""; } for ($i = 0; $i <= sizeof($moz_extra_ver4); $i++){ echo ""; } for ($i = 0; $i <= sizeof($moz_rv); $i++){ echo ""; } echo "
luser_agent0[$i]:\"$luser_agent0[$i]\"
luser_agent1[$i]:\"$luser_agent1[$i]\"
luser_agent2[$i]:\"$luser_agent2[$i]\"
chkvers[$i]:\"$chkvers[$i]\"
moz_extra_ver[$i]:\"$moz_extra_ver[$i]\"
moz_extra_ver1[$i]:\"$moz_extra_ver1[$i]\"
moz_extra_ver2[$i]:\"$moz_extra_ver2[$i]\"
moz_extra_ver3[$i]:\"$moz_extra_ver3[$i]\"
moz_extra_ver4[$i]:\"$moz_extra_ver4[$i]\"
moz_rv[$i]:\"$moz_rv[$i]\"

"; } ######################### ##### test function ##### ######################### function test() { $testwarn = $this -> testwarn; $browser = $this -> browser; $browser_ver = $this -> browser_ver; $browser_subver = $this -> browser_subver; $browser_sup = $this -> browser_sup; $os = $this -> os; $os_ver = $this -> os_ver; $os_vendor = $this -> os_vendor; $arch = $this -> arch; $lang[0] = $this -> lang; $lang[1] = $this -> sub_lang; $encryption = $this -> encryption; $agentstring = $this -> agentstring; $http_lang = $this -> http_lang; $remote_ip = $this -> remote_ip; $render_eng = $this -> render_eng; $render_eng_ver = $this -> render_eng_ver; $moz_release = $this -> moz_release; if ($testwarn == "yes" ) { echo "WARNING: Useragentstring overridden:
"; } echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo ""; echo "
os:$os
os vendor:$os_vendor
os version:$os_ver
arch:$arch
browser:$browser
browser version:$browser_ver
browser subversion:$browser_subver
browser supplied by:$browser_sup
mozilla release:$moz_release
lang:$lang[0]
sublang:$lang[1]
encryption:$encryption
remote ip:$remote_ip
render engine:$render_eng
render engine version:$render_eng_ver

"; echo "HTTP Useragentstring: " . $agentstring . "
"; echo "HTTP Accept Language: " . $http_lang . "
"; print'
Teststring:
'; } } ?>