Не сте регистриран! Регистрирайте се БЕЗПЛАТНО, за да използвате услугите на сайта!

   Рубрики
 
 
 
 

 Форуми
» SEO и оптимизация
» Всичко за PHP и Perl
» Всичко за C, C++ и .NET
» Всичко за Java и JSP
» Всичко за SQL и MySQL
» Всичко за XHTML и CSS
» Презентация на сайтове
 Брояч за уникални посещяния с PHP и MySQL
  1. Брояч за уникални посещяния с PHP и MySQL
sharigan
     
Автор  sharigan (16.07.2008 09:41)  съобщение до автора
Погледнат  1135 пъти  добави към любими
Оценка  добави коментар
Гласове  3  изпрати на приятел
Коментари  (2)  абонирай се за MySQL
    Страница 1 / 1

 



С помощта на този урок ще ще може да проследявате броя на уникалните посещения на вашия сайт.

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

Първо трябва да направим таблицата в съответната база данни.

Това е кода:

CODE
1
2
3
4
5
create table 'ipcount'(
'id' int not null auto_increment primary key,
'ip' varchar(15) not null,
'timestamp' bigint(15) not null
)

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

CODE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<?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";



   


Ключови думи: PHP MySQL брояч уникални посещяния


Още уроци от тази рубрика


 
  • Подобни теми от myLinks
 

 1 посетител чете този урок (0 потребители и 1 гост)  
Активни потребители: ---
   
  

Еmail  
 

Страхотен е доста силно казано.
1. Не е нужно да има поле ID - тук ключ спокойно могат да бъде комбинацията от IP/Time
2. IP varchar?? Защо varchar, а не int? ip2long, long2ip
3. Такава статистика не е полезна много, трябва още малко за да има полза от нея :).

Това повече е подходящо за скриптове отиколктоо за уроци!

  PureEvil на 22.07.2008 17:55

Трябва да има един ред със линка от сайта от които си взел урока или поне името на автора напиши.
Иначе урока е страхотен

  Skull на 21.07.2008 10:45

 

 
  • Интересно от Софтуер
 



IT-PLACE.NET © 2004 - 2008