Egyedi látogatók számlálása PHP-val
2011.06.19. 11:52
Sokan vagyunk úgy, hogy szeretnénk tudni, mennyi látogatója is van az oldalunknak. Sok fajta script/leírás található a neten, de én is leírok egy fajtát.
Sokunkban megfordult már biztosan az, hogy vajon mennyi látogatónk van. Szeretnénk tudni, hogy mikor vannak a legtöbben fen, miket olvasnak, stb. Most ebben a leírásban megírom nektek azt, hogy hogyan is lehetne számolni a felhasználókat úgy, hogy ne a lap letöltéseket számolja, hanem az egyedi felhasználókat (ez részben igaz, ugyanis ha dinamikus ip van, akkor újra kezdi számolni, amikor a felhasználó újra csatlakozik az internetre).
Először is hozzunk létre egy adatbázist, amibe felvesszük majd az adatokat.
Egy latogato névre hallgató táblát hoztunk létre, amiben van egy id - azonosító, egy ip - ip cím és egy datum, ami a pontos dátumot fogja majd tárolni.
Első lépés a php-ban az az, hogy nézze meg a program, hogy mi az ip címünk, majd egyeztesse össze az adatbázissal, és ha van találat, akkor ne vegye fel újra az adatbázisba, ellenbe ha nincs bent, akkor szúrja be.
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
|
<?php
//ADATBÁZISHOZ//
define('MYSQL_HOST', "localhost");
define('MYSQL_USER', "felhasználóinév");
define('MYSQL_PASS', "jelszó");
define('MYSQL_BASE', "adatbázis neve");
//IP lekérdezése és tárolása változóban//
$IP = $_SERVER["REMOTE_ADDR"];
//CSATLAKOZÁS AZ ADATBÁZISHOZ ÉS LEKÉRDEZÉS, HOGY VAN-e ILYEN IP FENT//
$dbc = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die ("HIBA, NEM TUDOK CSATLAKOZNI!");
mysql_select_db(MYSQL_BASE, $dbc) or die ("NEM LÉTEZŐ ADATBÁZIS!");
$query = "SELECT ip FROM latogato WHERE ip = '$IP'";
$result = mysql_query($query, $dbc);
$latogato = mysql_num_rows($result);
//ELLENŐRZÉS, hogy feltölthető-e az új ip cím//
if ($latogato == "0") {
$query2 = "INSERT INTO latogato (ip, datum) VALUES ('$IP',NOW()");
mysql_query($query2, $dbc);
}
mysql_close($dbc);
?>
|
Ez már elintézi a dolgát, ezek után már csak nekünk kéne tudni, hogy mennyien látogatnak meg minket. Ehhez egy admin részt csinálunk, amit csak mi érhetünk majd el.
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
|
<?php
//ADATBÁZISHOZ//
define('MYSQL_HOST', "localhost");
define('MYSQL_USER', "felhasználóinév");
define('MYSQL_PASS', "jelszó");
define('MYSQL_BASE', "adatbázis neve");
//IP lekérdezése és tárolása változóban//
$IP = $_SERVER["REMOTE_ADDR"];
//CSATLAKOZÁS AZ ADATBÁZISHOZ ÉS LEKÉRDEZÉS, HOGY VAN-e ILYEN IP FENT//
$dbc = mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) or die ("HIBA, NEM TUDOK CSATLAKOZNI!");
mysql_select_db(MYSQL_BASE, $dbc) or die ("NEM LÉTEZŐ ADATBÁZIS!");
?>
<table>
<tr>
<td><b>Sorszám</b></td>
<td><b>Ip</b></td>
<td>Dátum</td>
</tr>
</table>
<?php
$query = "SELECT * FROM latogato";
$result = mysql_query($query, $dbc);
while($row = mysql_fetch_array($result)) {
echo "<table><tr><td><center>".$row["id"]."</center></td>
<td><center>".$row["ip"]."</center></td>
<td><center>".$row["datum"]."</center></td></tr></table>";
}
$query2 = "SELECT * FROM latogato";
$result2 = mysql_query($query2, $dbc);
$total = mysql_num_rows($result2);
echo "Összes látogató eddig: ".$total;
?>
|
Ezzel az oldallal, megtudjuk tekinteni a látogatókat egyesével (ip alapján) és az alján az összes látogatót látjuk, akik megtekintették az oldalt, mióta müködik ez a script. :)
Remélem ezzel segítettem nektek, következő részben befogom mutatni, hogy hogyan tudjuk ezzel a scripttel kiiratni, hogy kik az online felhasználók. :)