могу своим кодом поделиться: | Код | <? //mysql user-name define("USER","username");
//mysql password define("PASS","password");
//mysql database define("DATABASE","database");
//id of your site define("IDEN", "your id");
class counter { var $regdate; var $online; var $today; var $all;
function counter($id,$ip_addr) { mysql_connect("localhost",USER,PASS) or die("Couldn't connect mysql databases"); mysql_select_db(DATABASE);
$query="SELECT today, vsego, segodna, regdate FROM counter WHERE id=\"".$id."\""; $result=mysql_query($query); if(mysql_num_rows($result)==0) return 0;
$this->online=$this->now($id,$ip_addr); $this->regdate=mysql_result($result,0,"regdate"); $to=mysql_result($result,0,"today"); $t=explode("|",$to); $a=mysql_result($result,0,"vsego"); $d=mysql_result($result,0,"segodna");
$ip=$ip_addr; $novi_den=date("Y:m:d"); if($novi_den>$d) { $vchera=sizeof($t); $query="UPDATE counter SET vsego=\"".($a+$vchera)."\", today=\"".$ip."\", segodna=\"".$novi_den."\" WHERE id=\"".$id."\""; mysql_query($query); $this->all=$vchera+$a+1; $this->today=1; mysql_free_result($result); mysql_close(); return 1; }
if(in_array($ip,$t)) { $this->all=$a+sizeof($t); $this->today=sizeof($t); mysql_free_result($result); mysql_close(); return 1; }
$query="UPDATE counter SET today=\"".$to."|".$ip."\" WHERE id=\"".$id."\""; mysql_query($query); $this->today=sizeof($t)+1; $this->all=$a+sizeof($t)+1; mysql_free_result($result); mysql_close(); return 1; }
function now($id,$ip_addr) { $set_time=(int)date("i")*60+(int)date("s")+60; $now_time=(int)date("i")*60+(int)date("s");
$query="SELECT online FROM counter WHERE id=\"".$id."\""; $result=mysql_query($query); $users=mysql_result($result,0,"online");
if(!$users) { $str=$ip_addr."=>".$now_time; $query="UPDATE counter SET online=\"".$str."\" WHERE id=\"".$id."\""; mysql_query($query); return 1; }
$mas=explode("|",$users); for($i=0; $i<sizeof($mas); $i++) $mas[$i]=explode("=>",$mas[$i]);
$i=0; while($i<sizeof($mas)&&($mas[$i][1]<$now_time||($mas[$i][1]-$now_time>60))) array_shift($mas);
if(!$mas) { $str=$ip_addr."=>".$set_time; $query="UPDATE counter SET online=\"".$str."\" WHERE id=\"".$id."\""; mysql_query($query); return 1; }
$ip=$ip_addr; for($i=0; $i<sizeof($mas); $i++) if($mas[$i][0]==$ip) {$mas[$i][1]=$set_time; $n=sizeof($mas); break;}
if($i==sizeof($mas)) { $me=array($ip,$set_time); $n=array_push($mas,$me); }
for($i=0; $i<sizeof($mas); $i++) $mas[$i]=implode("=>",$mas[$i]); $str=implode("|",$mas); $query="UPDATE counter SET online=\"".$str."\" WHERE id=\"".$id."\""; mysql_query($query);
return $n; }
function show() { $since=explode(":",$this->regdate); switch($since[1]) { case("01"):$since[1]="January"; break; case("02"):$since[1]="February"; break; case("03"):$since[1]="March"; break; case("04"):$since[1]="April"; break; case("05"):$since[1]="May"; break; case("06"):$since[1]="June"; break; case("07"):$since[1]="July"; break; case("08"):$since[1]="August"; break; case("09"):$since[1]="September"; break; case("10"):$since[1]="October"; break; case("11"):$since[1]="November"; break; case("12"):$since[1]="December"; }
echo " Now Online: ".$this->online." | Today: ".$this->today." | Since ".$since[1]." ".$since[2].", ".$since[0].": ".$this->all ."<br>"; }
function _counter() { unset($this->regdate); unset($this->online); unset($this->today); unset($this->all); }
};
$A=new counter(IDEN, $GLOBALS['REMOTE_ADDR']); $A->show(); $A->_counter(); ?>
|
а таблица вот такая: | Код | CREATE TABLE counter ( id varchar(30) NOT NULL default '', domain varchar(150) NOT NULL default '', online longtext NOT NULL, today longtext NOT NULL, vsego varchar(12) NOT NULL default '', segodna varchar(12) NOT NULL default '', regdate varchar(12) NOT NULL default '', PRIMARY KEY (id) ) TYPE=MyISAM;
|
id - идентификатор сайта. так что эта таблица может работать для нескольких сайтов. считает сколько уникальных юзеров зашло за всё время существовния сайта, сколько сегодня и сколько на данный момент. не использует cookies. Это сообщение отредактировал(а) lasalexx - 14.3.2006, 23:28
|