Ostatnio pokusiłem się o napisanie klasy która tak jak na forum będzie wyświetlała Ostanią Akcję wykonaną przez użytkowników, oto kod:
<? //+----------------------------------------------------- //| lastAction v0.2 //+----------------------------------------------------- //| Description: Klasa wyswietla ostatnie wykonane //| akcje przez uzytkownikow w ciagu ostatnich x //| minut. //+----------------------------------------------------- //| Instalacja //+----------------------------------------------------- //| CREATE TABLE `action` ( //| `sid` char(255) NOT NULL default '', //| `action` char(255) default NULL, //| `ip` char(255) default NULL, //| `time` int(11) default NULL, //| PRIMARY KEY (`sid`) //| ) //| INSERT INTO `action` SET //| `sid` = 'maxonline' //+----------------------------------------------------- //| author: strife <strifee(at)gmail(dot)com> //+----------------------------------------------------- class lastAction { var $activeTime; function dbConnect( $host, $database, $user, $pass ) { } function execute( $action) { $this -> clearOld(); { $uIp = $_SERVER['HTTP_X_FORWARDED_FOR']; if (! $uIp) { $uIp = $_SERVER['REMOTE_ADDR']; } { INTO action SET sid = '\" . $uSid . \"', ip = '\" . $uIp . \"', action = '\" . $action . \"' \"); } else { SET ip = '\" . $uIp . \"', action = '\" . $action . \"' WHERE sid = '\" . $uSid . \"' \"); } } } function clearOld() { FROM action AND sid <> 'maxonline' \"); } function online() { AS online FROM action WHERE sid <> 'maxonline' \") ); return $z['online']; } function maxonline() { FROM action WHERE sid = 'maxonline' \") ); if ( $p ) { $k = $this -> online(); if ( $k > $p['time'] ) { action = '\" . time() . \"' WHERE sid = 'maxonline' \"); FROM action WHERE sid = 'maxonline' \") ); return $this -> maxonline = $result; } else { FROM action WHERE sid = 'maxonline' \") ); return $this -> maxonline = $result; } } } function display() { FROM action WHERE sid <> 'maxonline' ORDER BY time DESC \"); { $res .= '<tr> <td>' . $resVar['ip'] . '</td> <td>' . $resVar['action'] . '</td> <td>' . $czas . $data . '</td> </tr>'; } echo '<style> html, body{ margin: 0; padding: 0; font-family: Tahoma, Helvetica, sans-serif; } table td{ font-size: 11px; background: #FAFAFA; border: 1px solid black; padding: 4px; } .head{ background: #EAEAEA; font-weight: bold; } </style> '; $str = '<table align=\"center\" cellpadding=\"0\" cellspacing=\"2\" width=600> <tr> <td class=\"head\">Adres IP</td> <td class=\"head\">Co robi?</td> <td class=\"head\">Czas</td> </tr> ' . $res . ' </table>'; } } $z = new lastAction; $z -> dbConnect( 'localhost', 'poligon', 'root', 'krasnal' ); $z -> activeTime = 30; // 30 sekund $z -> execute( \"Cos tam robi na glownej stronie\" ); $z -> display(); ?>
dbConnect - łączenie z bazą, host, baza, user i hasło.
activeTime - W sekundach podajemy użytkowników aktywnych przez ostatnie $x sekund.
execute - Tutaj ustawiamy jaka akcja została wykonana przez użytkownika, np. można to użyć w ten sposób:
<?php switch ($_GET['action']) { case news: $z -> execute('Oglada Newsy'); break; case down: $z -> execute('Oglada Download'); break; default: $z -> execute('Oglada glowna strone'); break; } ?>
display - jest to przykładowa metoda obrazująca działanie skryptu.
online - zwraca ile jest użytkowników online na stronie.
maxonline - zwraca ile użytkowników było najwięcej na stronie.
Koniec. Chciałbym abyście, ocenili to i napisali co poprawić etc. Mam nadzieję że komuś sie to przyda. Pozdrawiam!
Aktualizacja 31.12.2005
Poprawiłem trochę kod, dodałem metodę która pokazuje ile jest użytkowników online w ciągu ostatnich x sekund.
Jeśli ktoś będzie miał problem z przekopiowaniem kodu ze strony załączam też phps http://dev.club.webhost.pl/source/lastAction.phps
Aktualizacja 05.01.2006
Cytat(http://blog.club.webhost.pl/lastaction-v02/)
Wprowadzone zostały dosyć istotne zmiany w stosunku do poprzedniej wersji, a mianowicie przy pustej sesji nie jest tworzony ani update'owany rekord.
Co więcej w klasie powstała nowa metoda, która pokazuje ile użytkowników najwięcej było online, pokazana jest data i liczba.
Efekty mojej pracy można zobaczyć http://poligon.club.webhost.pl/lastAction/, natomiast nowe źródło nowej wersji skryptu można zobaczyć pod tym adresem: http://dev.club.webhost.pl/source/lastAction-0-2.phps
Co więcej w klasie powstała nowa metoda, która pokazuje ile użytkowników najwięcej było online, pokazana jest data i liczba.
Efekty mojej pracy można zobaczyć http://poligon.club.webhost.pl/lastAction/, natomiast nowe źródło nowej wersji skryptu można zobaczyć pod tym adresem: http://dev.club.webhost.pl/source/lastAction-0-2.phps
Pozdrawiam!