Потребител Парола | Регистрация | Забравена парола
Меню
· Начало
· Файлове
· Форум
· Връзки
· Категории на уроците
· За контакти
· Фото галерия
· Търсене
Кажи на приятел

Вашия email:
email на приятел:
Копие за вас?
Реклама

Брояч за уникални посещяния с MySQL

PHP & MySQLС помощта на този урок ще ще може да проследявате броя на уникалните посещения за деня, за вчера, за последните 6 дни, да видите средно дневните посещения за последните 6 дни и рекорда за последната седмица във вашият сайт. Скрипта е направен с помощта на mysql база данни.

Първо трябва да направим таблицата в съответната база данни. Това е кода:
create table 'ipcount'(
'id' int not null auto_increment primary key,
'ip' varchar(15) not null,
'timestamp' bigint(15) not null
)

Ето го и скрипта, като statistics.php

<?php

//Тук всеки си слага своите настройки

mysql_connect("localhost","root","")
or die("There is no connection to the mysql server!");

//ще отбележа,че базата данни ми се казва ipcounter,но вие може да си я създадете с каквото име желаете

mysql_select_db("ipcounter")
or die("The ipcounter database could not be selected!");

$ip=$_SERVER["REMOTE_ADDR"];
$time=time();
$dnes=0;
$v4era=0;
$last6=0;
$sred_dnevno=0;
$rekord_date=time();
$den_na4=mktime(0,0,0,date('m'),date('d'),date('Y'));
$den_krai=mktime(0,0,0,date('m'),date('d')+1,date('Y'));
$v4era_na4=mktime(0,0,0,date('m'),date('d')-1,date('Y'));
$before6=mktime(0,0,0,date('m'),date('d')-6,date('Y'));

$query1="select ip,timestamp from ipcount where ip='$ip' and timestamp>='$den_na4'";

$result1=mysql_query($query1)
or die("The query1 could not be made!");

$num1=mysql_num_rows($result1);

if($num1==0)

{
$query="insert into ipcount values('','".$ip."','".$time."')";
mysql_query($query);
}

else

{
$row=mysql_fetch_array($result1);
$timestamp=$row['timestamp'];
$ip_baz=$row['ip'];

$query="update ipcount set timestamp=".$time." where ip=$ip_baz and timestamp=$timestamp";
mysql_query($query);
}

//Това е кода за получаването на уникалните посещения днес и вчера

$query2="select * from ipcount where timestamp>=$v4era_na4 and timestamp<$den_krai";
$result2=mysql_query($query2);

while($row=mysql_fetch_array($result2))

{

if($row["timestamp"]<$den_na4)
{
$v4era++;
}

else
{
$dnes++;
}

}

//това е частта от кода за получаването на уникалните посещения(без днешния) за последните 6 дни

$query3="select count(distinct ip) from ipcount where timestamp>=$before6 and timestamp<$den_na4";
$result3=mysql_query($query3);
$broi=mysql_num_rows($result3);

if($broi>0)
{
list($last6)=mysql_fetch_array($result3);
}

/*Това е частта от кода за получаването на средно дневните посещения за последните 6 дни,без да броим днешния(той все още не е изтекъл)*/

$query4="select * from ipcount where timestamp>=$before6 and timestamp<$den_na4";
$result4=mysql_query($query4);
$sred_dnevno=substr(mysql_num_rows($result4)/6,0,4);

/*Това е частта от кода за намирането на рекорда на уникалните посешения за последната седмица,тук вече си вземаме и днешният ден,независимо че не е изминал, защото вече може да имаме рекорд поставен днес*/

for($i=-1;$i<6;$i++)

{

$a[$i+1]=array();

$na4=mktime(0,0,0,date('m'),date('d')-($i+1),date('Y'));
$krai=mktime(0,0,0,date('m'),date('d')-$i,date('Y'));

$query5="select ip,timestamp from ipcount where timestamp>=$na4 and timestamp<$krai";
$result5=mysql_query($query5);

$a[$i+1][0]=mysql_num_rows($result5);

if($a[$i+1][0]>0)
{
$tek_time=mysql_result($result5,0,'timestamp');
$a[$i+1][1]=date("j F Y",$tek_time);
}

else

{
$a[$i+1][1]=0;
}

}

$rekord_mas=max($a[0],$a[1],$a[2],$a[3],$a[4],$a[5],$a[6]);
$rekord=$rekord_mas[0];
$rekord_date=$rekord_mas[1];

if($rekord==$a[0][0])
{
$rekord_date=$rekord_date."(днес)";
}

//Остана само да изведем данните

echo "<font color='red' size='4'>Уникални посещения днес:$dnes<br>Уникални посещения вчера:$v4era<br>";
echo "Общо уникални посещения за последните 6 дни(без днешния):$last6<br>";
echo "Уникални посещения средно на ден през последните 6 дни(без днешния): $sred_dnevno<br>Рекорд за последната седмица: ".$rekord." уникални посещения на ".$rekord_date."</font>";

?>



Това което трябва да се визуализира е:

Уникални посещения днес: 25
Уникални посещения вчера: 19
Общо уникални посещения за последните 6 дни (без днешния): 110
Уникални посещения средно на ден през последните 6 дни (без днешния):23
Рекорд за последната седмица: 27 уникални посещения поставен на 5 October 2007";
· smilev на January 12 2011 10:38:07 · 0 Коментари · 1791 Прочитания · Отпечатай
Коментари
Няма добавени коментари.
Напиши коментар
Моля влезте, за да коментирате.
Оценка
Рейтингите са достъпни само за регистрирани.

Моля влезте или се регистрирайте за да гласувате.

Няма оценки.
Вход
Потребител

Парола



Не сте регистрирани?
Натиснете тук за регистрация.

Забравена парола?
Натиснете тук за нова.
Анкета
С каква операционна система работите











Трябва да влезете за да гласувате.
ЧАТ
Трябва да влезате за да пуснете съобщение.

Няма съобщения.
Статистика