Łukasz Tkacz
- Mentor MyBB
- 2 137
Cześć wszystkim
Jako że zamknąłem swojego osobistego bloga, a co za tym idzie "likwiduję" większość wpisów, postanowiłem sprawy związane z MyBB opublikować tutaj. Być może nie każdy trafiał na mojego bloga ( ), być może komuś się to przyda.
Jak wiecie, MyBB posiada oddzielną stronę ze spisem osób będących online (włącznie z gośćmi). Wyświetla on datę ostatniej aktywności, miejsce w którym był użytkownik – np. „przegląda dział testowy” – a dla administratorów także adres IP. Tutaj jest moim zdaniem coś niewykorzystanego. MyBB w bazie danych, w tabeli od sesji trzyma informacje o przeglądarce jaką posługuje się użytkownik, zapis user agenta. Oczywiście nie jest to wartość zaufana, użytkownik może ją swobodnie modyfikować, ale jej znanie w przypadku nagłego natłoku gości może pozwolić na wyjaśnienie problemów np. wykrycie zbyt upartego robota indeksującego, który zawala nas wieloma instancjami z wielu serwerów.
Skoro jest w bazie, to można to szybko dodać do spisu online, co też chciałbym pokazać w tym mini-poradniku.
Nie stworzyłem i nie stworzę do tego żadnego pluginu, bo skrypt nie ma uchwytów w potrzebnych miejscach, a wrzucanie długiego kodu, który powtarzałby to co robi oryginał nie ma najmniejszego sensu. Modyfikacja jest bardzo prosta do wdrożenia.
Edytujemy plik /online.php, odnajdujemy:
i zmieniamy na:
Edytujemy plik /inc/functions_online.php, odnajdujemy:[/b]
przed znalezionym fragmentem dodajemy:
W ACP -> Style i szablony -> Szablony edytujemy szablon „online_row” (grupa Kto jest online), odnajdujemy:
zamieniamy na:
No i to by było na tyle. Od teraz osoby z uprawnieniami administratora będą mogły widzieć informacje o przeglądarkach w spisie osób z aktywnymi sesjami. Oczywiście każdy może inaczej to sobie sformatować, podany tu rozmiar czcionki to według mnie wartość optymalna względem innych elementów w spisie. Jeżeli ktoś chciałby dać uprawnienie również moderatorom, powinien w drugim punkcie zmienić zapis ‚cancp’ na ‚canmodcp’.
Aha, pamiętajmy o tym, że długość UA jest ograniczana do maksymalnie 100 znaków. Taki limit nie wiedzieć czemu przyznali autorzy MyBB i obcinanie następuje już na etapie tworzenia / aktualizacji sesji w bazie danych.
Poniżej screen przedstawiający jak to wygląda w praktyce. Jak widać, Chrome jest dosyć popularną przeglądarką
Jako że zamknąłem swojego osobistego bloga, a co za tym idzie "likwiduję" większość wpisów, postanowiłem sprawy związane z MyBB opublikować tutaj. Być może nie każdy trafiał na mojego bloga ( ), być może komuś się to przyda.
Jak wiecie, MyBB posiada oddzielną stronę ze spisem osób będących online (włącznie z gośćmi). Wyświetla on datę ostatniej aktywności, miejsce w którym był użytkownik – np. „przegląda dział testowy” – a dla administratorów także adres IP. Tutaj jest moim zdaniem coś niewykorzystanego. MyBB w bazie danych, w tabeli od sesji trzyma informacje o przeglądarce jaką posługuje się użytkownik, zapis user agenta. Oczywiście nie jest to wartość zaufana, użytkownik może ją swobodnie modyfikować, ale jej znanie w przypadku nagłego natłoku gości może pozwolić na wyjaśnienie problemów np. wykrycie zbyt upartego robota indeksującego, który zawala nas wieloma instancjami z wielu serwerów.
Skoro jest w bazie, to można to szybko dodać do spisu online, co też chciałbym pokazać w tym mini-poradniku.
Nie stworzyłem i nie stworzę do tego żadnego pluginu, bo skrypt nie ma uchwytów w potrzebnych miejscach, a wrzucanie długiego kodu, który powtarzałby to co robi oryginał nie ma najmniejszego sensu. Modyfikacja jest bardzo prosta do wdrożenia.
1 Edycja online.php
Edytujemy plik /online.php, odnajdujemy:
SELECT DISTINCT s.sid, s.ip, s.uid, s.time, s.location, u.username, s.nopermission, u.invisible, u.usergroup, u.displaygroup
i zmieniamy na:
SELECT DISTINCT s.sid, s.ip, s.uid, s.time, s.useragent, s.location, u.username, s.nopermission, u.invisible, u.usergroup, u.displaygroup
2 Edycja functioncs_online.php
Edytujemy plik /inc/functions_online.php, odnajdujemy:[/b]
// And finally if we have permission to view this user, return the completed online row
przed znalezionym fragmentem dodajemy:
$online_ua = '';
if ($mybb->usergroup['cancp'] == 1 && isset($user['useragent']))
{
$online_ua = '<br /><span style="font-size:9px;">' . $user['useragent'] . '</span>';
}
3 Edycja szablonów
W ACP -> Style i szablony -> Szablony edytujemy szablon „online_row” (grupa Kto jest online), odnajdujemy:
{$user_ip}
zamieniamy na:
{$user_ip}{$online_ua}
No i to by było na tyle. Od teraz osoby z uprawnieniami administratora będą mogły widzieć informacje o przeglądarkach w spisie osób z aktywnymi sesjami. Oczywiście każdy może inaczej to sobie sformatować, podany tu rozmiar czcionki to według mnie wartość optymalna względem innych elementów w spisie. Jeżeli ktoś chciałby dać uprawnienie również moderatorom, powinien w drugim punkcie zmienić zapis ‚cancp’ na ‚canmodcp’.
Aha, pamiętajmy o tym, że długość UA jest ograniczana do maksymalnie 100 znaków. Taki limit nie wiedzieć czemu przyznali autorzy MyBB i obcinanie następuje już na etapie tworzenia / aktualizacji sesji w bazie danych.
Poniżej screen przedstawiający jak to wygląda w praktyce. Jak widać, Chrome jest dosyć popularną przeglądarką