Dołącz do zespołu ekspertów! Backend lub Frontend Developer?

Sprawdź najnowsze oferty pracy naszego partnera - 8lines.io!

Przeglądarka (user agent) w spisie online dla MyBB

Założony przez Łukasz Tkacz.

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 ( :lol: ), 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.sids.ips.uids.times.locationu.usernames.nopermissionu.invisibleu.usergroupu.displaygroup 

i zmieniamy na:
SELECT DISTINCT s.sids.ips.uids.times.useragents.locationu.usernames.nopermissionu.invisibleu.usergroupu.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'] == && 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ą ;)

   
Hehe no no :P Jest popularna to prawda :P Ale ja mam pytanie co to jest to:
Mozilla/5.0
Przy każdym użytkowniku?
To jest właśnie useragent. Większość przeglądarek rozpoczyna przedstawianie od Mozilla dla większej kompatybilności (to jeszcze "zamierzchłość" sprzed wielu lat).



Użytkownicy przeglądający ten wątek:

1 gości