Re: php-counter

From: Date: Wed, 22 Aug 2001 16:09:49 +0000
Subject: Re: php-counter
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-63924@lists.php.net to get a copy of this message
Here goes a sample code. The db interaction is throurh db abstraction layer but easily can be translated to used directly mysql_* functions. <?php include 'db.lib.php'; include 'webstats.lib.php'; class ClientBrowser{//-=-=-=-=-=--==-=-=-=--==-=-=-=-=-=-=-=-=-=-=-=-class ClientBrowser-=-=-==-=- var $browser='unknown'; var $mozilla=''; var $major='0.0'; var $minor='0.0'; var $build=''; var $platform=''; var $windowses=array( 'win95'=>'windows 95', 'windows 95'=>'windows 95', 'win98'=>'windows 98', 'windows 98'=>'windows 98', 'winnt'=>'windows nt 4.0', 'windows nt'=>'windows nt 4.0', 'windows'=>'windows 95', 'windows 3.1'=>'windows 3.1', 'win16' => 'windows 3.1', 'win32' => 'windows 95', 'windows'=> 'win-unknown', 'windows nt 4.0'=>'windows nt 4.0', 'windows nt 5.0'=>'windows 2000', 'windows 2000' => 'windows 2000', 'win2k' => 'windows 2000', 'windows millennium'=>'windows me', 'windows ce' => 'windows ce', 'windows ce 2.0' => 'windows ce 2.0', 'windows ce 3.0' => 'windows ce 3.0' ); function ClientBrowser($http_agent='none'){ if ($http_agent=='none') $http_agent=$GLOBALS['HTTP_USER_AGENT']; if($cap = $this-> _client_is_MSIE($http_agent)){ $this->browser='MSIE'; }elseif($cap = $this->_client_is_MSPIE($http_agent)){ $this->browser='MSPIE'; }elseif($cap = $this->_client_is_Opera($http_agent)){ $this->browser='OPERA'; }elseif($cap = $this->_client_is_NS($http_agent)){ $this->browser='NAVIGATOR'; } if ($this->browser!='unknown'){ $this->mozilla=$cap['mozilla']; $this->major=$cap['major']; $this->minor=$cap['minor']; $this->build=$cap['build']; $this->platform=$cap['platform']; } } function _client_is_MSIE($s){ $to_return = FALSE; if(preg_match('~^Microsoft Internet Explorer/([^ ]+) \\(([^)]+)\\)~i', $s, $a)){ $to_return = array('mozilla' => '', 'major' => '1', 'minor' => '0', 'build' => $a[1]); if (strpos(' '.strtolower($a[2]),'win')){ $to_return['platform'] = isset($this->windowses[strtolower($a[2])]) ? $this->windowses[strtolower($a[2])]:'win-unknown'; }else{ $to_return['platform'] = strtolower($a[2]); } return $to_return; } if(preg_match('~^Mozilla/([^ ]+) \\(compatible;.* MSIE ([^.]+)\\.([\d.]+)([^; )]*).*? ((Win|Windows|Mac_PowerPC|Mac_68000|Mac_68K|Mac_PPC|OS/2|SUNOS|sunos 4|sunos 5|i86|irix|irix 6|irix 5|hp-ux|aix|aix1|aix2|aix3|aix4|linux|unix_system_v|ncr|reliantunix|bsd)[^); ]*)~i', $s, $a)){ $to_return = array('mozilla' => $a[1], 'major' => $a[2], 'minor' => $a[3], 'build' => $a[4]); if (strpos(' '.strtolower($a[5]),'win')){ $to_return['platform'] = isset($this->windowses[strtolower($a[5])]) ? $this->windowses[strtolower($a[5])]:'win-unknown'; }else{ $to_return['platform'] = strtolower($a[5]); } return $to_return; } if(preg_match('~^Mozilla/([^ ]+) \\(compatible;.* MSIE ([^.]+)\\.([\d.]+)([^; )]*)~i', $s, $a)){ $to_return = array('mozilla' => $a[1], 'major' => $a[2], 'minor' => $a[3], 'build' => $a[4], 'platform' => ''); return $to_return; } return $to_return; } function _client_is_MSPIE($s){ $to_return = FALSE; if(preg_match('~^Microsoft Pocket Internet Explorer/([^.]+)\\.([\d.]+)(.*)~i', $s, $a)){ $to_return = array('mozilla' => '', 'major' => $a[1], 'minor' => $a[2], 'build' => $a[3], 'platform' => 'windows ce'); return $to_return; } if(preg_match('~^Mozilla/([^ ]+) \\(compatible;.* MSPIE ([^.]+)\\.([\d.]+)([^; )]*).*? ((Win|Windows|Mac_PowerPC|Mac_68000|Mac_68K|Mac_PPC|OS/2|SUNOS|sunos 4|sunos 5|i86|irix|irix 6|irix 5|hp-ux|aix|aix1|aix2|aix3|aix4|linux|unix_system_v|ncr|reliantunix|bsd)[^); ]*)~i', $s, $a)){ $to_return = array('mozilla' => $a[1], 'major' => $a[2], 'minor' => $a[3], 'build' => $a[4]); if (strpos(' '.strtolower($a[5]),'win')){ $to_return['platform'] = isset($this->windowses[strtolower($a[5])]) ? $this->windowses[strtolower($a[5])]:'wince-unknown'; }else{ $to_return['platform'] = strtolower($a[5]); } return $to_return; } return $to_return; } function _client_is_NS($s){ $to_return = FALSE; if(preg_match('~^Mozilla/([^.]+)\\.([\d.]+)([^ ]*).*?\\(([^;)]+)~i', $s, $a)){ if(strtolower($a[4]) == 'compatible') return FALSE; if(strtolower($a[4]) == 'macintosh'){ if(strpos($s, '68K')) $a[4] = 'Mac_68K'; elseif(strpos($s, 'PPC')) $a[4] = 'Mac_PPC'; } $to_return = array('mozilla' => $a[1] . "." . $a[2] . $a[3], 'major' => $a[1], 'minor' => $a[2], 'build' => $a[3]); if (strpos(' '.strtolower($a[4]),'win')){ // heading space added because specific return value of strpos() $to_return['platform'] = isset($this->windowses[strtolower($a[4])]) ? $this->windowses[strtolower($a[4])]:'win-unknown'; }else{ $to_return['platform'] = strtolower($a[4]); } return $to_return; } return $to_return; } function _client_is_Opera($s){ $to_return = FALSE; if(preg_match('~Mozilla/([^ ]+) \\(((Win|Windows|Mac_PowerPC|Mac_68000|Mac_68K|Mac_PPC)[^);]*).*Opera ([^.]+)\\.([\d.]+)([^; )]*)~i', $s, $a)){ $to_return = array('mozilla' => $a[1], 'major' => $a[4], 'minor' => $a[5], 'build' => $a[6]); if (strpos(' '.strtolower($a[2]),'win')){ $to_return['platform'] = isset($this->windowses[strtolower($a[2])]) ? $this->windowses[strtolower($a[2])]:'win-unknown'; }else{ $to_return['platform'] = strtolower($a[2]); } return $to_return; } if(preg_match('~Opera/([^.]+)\\.([\d.]+)([^; )]*) \\(((Win|Windows|Mac_PowerPC|Mac_68000|Mac_68K|Mac_PPC|OS/2|SUNOS|sunos 4|sunos 5|i86|irix|irix 6|irix 5|hp-ux|aix|aix1|aix2|aix3|aix4|linux|unix_system_v|ncr|reliantunix|bsd)[^); ]*)~i', $s, $a)){ $to_return = array('mozilla' => '', 'major' => $a[1], 'minor' => $a[2], 'build' => $a[3]); if (strpos(' '.strtolower($a[5]),'win')){ $to_return['platform'] = isset($this->windowses[strtolower($a[4])]) ? $this->windowses[strtolower($a[4])]:'win-unknown'; }else{ $to_return['platform'] = strtolower($a[4]); } return $to_return; } return $to_return; } } // -=-=-=-=-=--==-=-=-=--==-=-=-=-=-=-=-=-=-=-=-=-class ClientBrowser-=-=-==-=- // -=--==-=-=-=-=-=--==-=-=-=-=--==-=-MAIN--==-=-=--==-=--==-=-=-=-// $client = new ClientBrowser($HTTP_USER_AGENT); $page_name = $HTTP_GET_VARS['page']; $screen_width = $HTTP_GET_VARS['scr_w']+0; $screen_height = $HTTP_GET_VARS['scr_h']+0; $screen_color = $HTTP_GET_VARS['scr_c']+0; if (preg_match('/^([0-9\.]+)$/',$screen_width.''.$screen_height.''.$screen_colo r)==0){ exit; } if ($WEBSTATS_pages[$page_name]['collecting']==1){ // You must have the $WEBSTATS_pages array in the included file webstats.lib.php . Collecting shows if we collect info about this page db_connect(); $res = db_exec('SELECT COUNT(*) FROM webPages WHERE webpage_name="'.$page_name.'";'); list($is_there)=db_fetch_array($res); if ($is_there==0){ db_free_result($res); db_exec('INSERT INTO webPages VALUES("","'.$page_name.'");'); }else{ db_free_result($res); } $res = db_exec('SELECT webpage_id FROM webPages WHERE webpage_name="'.$page_name.'";'); list($webpage_id) = db_fetch_array($res); db_free_result($res); $sql_to_exec = "SELECT COUNT(*) FROM webStats WHERE webpage_id=$webpage_id AND os_name='".$client->platform. "' AND browser='".$client->browser." ".$client->major.".".$client->minor. "' AND screen_w=$screen_width AND screen_h=$screen_height AND screen_c=$screen_color;"; $res = db_exec($sql_to_exec); $is_there = 0; list($is_there) = db_fetch_array($res); db_free_result($res); if ($is_there==1){ $update_sql = "UPDATE webStats set counter=counter+1 WHERE webpage_id=$webpage_id AND os_name='".$client->platform. "' AND browser='".$client->browser." ".$client->major.".".$client->minor. "' AND screen_w=$screen_width AND screen_h=$screen_height AND screen_c=$screen_color;"; db_exec($update_sql); }else{ $insert_sql = "INSERT INTO webStats (webpage_id, os_name, browser, screen_w, screen_h, screen_c, counter) ". "VALUES($webpage_id,'".$client->platform."','".$client->browser." ".$client->major.".".$client->minor."',". "$screen_width, $screen_height, $screen_color, 1);"; db_exec($insert_sql); } } ?> Andrey Hristov IcyGEN Corporation http://www.icygen.com 99% ----- Original Message ----- From: "Gert Mellak" <gert.mellak@utanet.at> To: <php-general@lists.php.net> Sent: Wednesday, August 22, 2001 6:49 PM Subject: [PHP] php-counter > hi! > > do you know an easy-to-use-php-counter, which uses mysql to store the data? > > gert > > > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, e-mail: php-general-unsubscribe@lists.php.net > For additional commands, e-mail: php-general-help@lists.php.net > To contact the list administrators, e-mail: php-list-admin@lists.php.net > >

« previous php.general (#63924) next »