Брояч на онлайн потребители – ООП урок
Направих един брояч за това колко онлайн потребителя има сега:
Ето таблицата:
CREATE TABLE IF NOT EXISTS `visitors` (
`visit_id` int(11) NOT NULL AUTO_INCREMENT,
`visit_ip` varchar(100) NOT NULL,
`visit_time` int(11) NOT NULL,
PRIMARY KEY (`visit_id`),
KEY `visit_ip` (`visit_ip`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
Ето целия php код:
// връзка към база данни
$conn = mysql_connect('localhost', 'root', '');
mysql_select_db('visits', $conn);
//създаваме клас
class Visits {
// Определяме на колко минути искаме да се ъпдейтва брояча
public $maxtime = '5';
/създаваме конструктора. В нашия случай не приема параметри
public function __construct() {
// променливата ip приема ip на посетителя. Примерно 127.0.0.1
$ip = $_SERVER['REMOTE_ADDR'];
// трием всички посетители, които са посетили сайта ни преди повече от 5 минути
$this->RemVisit($ip);
// правим проверка дали съществува това ip в нашата база данни
if ($this->VisitExists($ip)) {
// ако съществува ъпдейтваме времето му
$this->UpdateVisits($ip);
} else {
// ако не съществува добавяме ip и време към базата данни
$this->AddVisit($ip);
}
// визуализираме колко посетителя има в момента
echo 'ima '.$this->ShowVisits().' posetitelq';
}
//създаваме публичен метод AddVisit, която приема параметъра $ip
public function AddVisit($ip) {
// sql заявка за вкарване на ip и време в базата данни
$sql = 'INSERT INTO visitors (visit_ip, visit_time) VALUES ("' . $ip . '",' . time() . ')';
mysql_query($sql);
}
// създаваме публичен метод за премахване на записи в базата данни, където visit_time е минало преди определеното от нас време
public function RemVisit($ip) {
mysql_query('DELETE FROM visitors WHERE visit_time>=' . time() + $this->maxtime * 60);
}
// проверка дали същестува посетител с това ip в базата данни
public function VisitExists($ip) {
$sql = mysql_query('SELECT visit_id FROM visitors WHERE visit_ip="' . $ip . '"');
if (mysql_num_rows($sql) == 1) {
return true;
} else {
return false;
}
}
// публичен метод заа ъпдейт на базата данни
public function UpdateVisits($ip) {
mysql_query('UPDATE visitors SET visit_time=' . time() . ' WHERE visit_ip="' . $ip . '"');
}
// публичен метод за визуализиране на броя посетители (резултатите в базата данни)
public function ShowVisits()
{
$sql=mysql_query('SELECT COUNT(visit_id) as allvisitors FROM visitors');
$rs=mysql_fetch_assoc($sql);
return $rs['allvisitors'];
}
}
// правим инстанция на класа Visits. Понеже сме задали магическия метод __construct няма смисъл да го присвояваме на променлива, после да визуализираме, да викаме методи от него и така нататък
new Visits();
Related posts: