Посетителите в момента (с бисквитка и БД)
02-01-2012
Сега ще ви покажа как може да следите хората влезнали в момента, във вашият сайт без да им е било искано потребителски логин. Тоест съвсем анонимни хора. Ще ги засичаме чрез бисквитки и ще ги записваме в базата данни. След което вие ще може да си ги изкравате резултатите във вашият примерно - администраторски панел.

Ако не успяхте да ме разберете, представете си:
Влизате в даден сайт, без още да сте мръднали мишката си, една бисквитка се е записала в вашият браузер която просто служи за проверка. Ако я имате вие сте в сайта, ако ли не. Вие не сте в сайта.
Следователно когато сте в сайта(тоест имате бисквитката), администратора ви взима IP-то и хостимето (като може и куп други работи) и си ги показва в негов отделен, може администраторски файл и по този начин следи колко човека има в сайта за последните 5 минути (тъй като съм го нагласил за 5 минути) и както казах взима на тези потребители тяхното IP и хостиме(може и различни още неща да си поиска от сървъра) и си ги изважда на екрана.



Вдъхновение от тази тема:
http://web-tourist.net/forum/viewtopic.php?t=117001

Урока си е мой, авторски.





----------------------------------
ПЪРВО:

Създаваме база данни.

С име: cu
Таблица с име: cu
Полета в таблицата: ip, hostname, vreme

Като ip varchar(100)
Като hostname varchar(200)
Като vreme varchar(100) и му слагате index key

vreme - Също може да го направите int(100), тъй като се записва в unixtimestamp, но аз съм го направил varchar.



----------------------------------
ВТОРО:

Попълнете правилно mysql_connect с вашите данни за връзка към базата данни.

Бисквитката е нагласена за 5 мин.


Какво представлява кода:

1. Отваряме сесия.
2. Свързваме се към базата данни.
3. Присвояваме времето (unixtimestamp) към променливата $time.
4. Проверяваме дали бисквитката е true.
5. Ако не е тогава е създаваме бисквитката като задаваме инето на бисквитката, описанието и времето тя да е валидна.
6. Ако е създадена бисквитата проверяваме това с $cc, тогава задаваме тя да е true.
7. Взимаме IP и HOSTNAME на човека влезнал в сайта туко що.
8. Слагаме малко защити на IP и HOSTNAME, просто за малко по-сигурно.
9. Излизаме от if проверката.
10. Присвояваме времето (unixtimestamp) към променлива и вадим 5 минутни от нея.
11. Изтриваме от базата данни всички записи там където времето въвъдено при запис на базата данни е равно или повече от 5 минути (това се извършва посредством WHERE клауза с променливата която сме присвоили към точка 10).
12. Изкарваме резултатите.



<?php
session_start();

mysql_connect('localhost', 'ИМЕТО ЗА ВРЪЗКА С БАЗАТА ДАННИ', 'ПАРОЛАТА');
mysql_select_db('cu');


$time=time();

if($_COOKIE['sesscheck']!=true) {

$duration = time() + (60 * 5); // 5 min, може да си го направиш по твой избор колкото искаш
$cc=setcookie('sesscheck', 'on', $duration, '/');

if($cc) {
$_COOKIE['sesscheck']=true;

$ip=htmlspecialchars(addslashes($_SERVER['REMOTE_ADDR']));
$hostname=htmlspecialchars(addslashes(gethostname()));


mysql_query("INSERT INTO `cu`(`ip`,`hostname`,`vreme`) VALUES ('$ip','$hostname', '$time')");

}

}

$time_check=$time-300; //Трябва да е равно на времето зададено на cookie то
mysql_query("DELETE FROM `cu` WHERE vreme<$time_check");


?>




<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
</head>
<body>


<?php
//Да приемем, че това е админ панела.

$online_row=mysql_query("SELECT * FROM `cu` ");

$online_obshto=mysql_num_rows($online_row);
echo "В момента има: ".$online_obshto." гост в сайта<br><br><br>";

while($online=mysql_fetch_assoc($online_row)){

echo "<table border='1'>";
echo "<tr><td>".$online['ip']."</td>";
echo "<td>".stripslashes($online['hostname'])."</td>";
echo "</tr></table>";

}
?>

</body>
</html>




/ Трябва да сте регистриран за да напишете коментар /