Kiedy user jest zalogowany? - która zmienna z bazy?

Tutaj udzielane jest wsparcie przy problemach związanych z instalacją, konwersją, aktualizacją oraz użytkowaniem phpBB 2.0.x.
LudzieSportu
Posty: 5
Rejestracja: 17 października 2006, 17:42
Kontakt:

Kiedy user jest zalogowany? - która zmienna z bazy?

Post autor: LudzieSportu » 30 marca 2007, 17:28

Witam

Chciałbym, żeby na profilach użytkowników pojawiała się informacja, czy użytkownik jest zalogowany. Ale nie jestem do końca pewien, która zmienna za to odpowiada. Chociażby dlatego, że jeśli np. zaloguję się i nie robię nic przez 15 minut, to na dole forum znika mój nick z listy userów zalogowanych (sprawdzałem to z innego komputera). Tak jakby sesja się "hibernowała". Jeśli jednak wykonam jakąś akcję, to z powrotem mój nick tam się pojawia. Więc wydaje mi się, że co najmniej dwie, lub więcej zmiennych jest odpowiedzialny za przechowywanie sesji lub zawiera informację o zalogowaniu.

W związku z tym pytanie, która jest najbardziej prawdziwa.

Mi wydaje się, że phpbb_sessions.session_logged_in. Jednak wydaje mi się, że nie jest to chyba w 100% pewne, bo kilka razy widziałem, że jakiś nick był wymieniony (na dole forum), że user już nie jest zalogowany, a ta zmienna cały czas miała wartość 1.

Czy jest może inna, lepsza zmienna?

Jeśli nie, to rozumiem, że wystarczy, że zrobię zapytanie do bazy, które sprawdzi, czy:

Kod: Zaznacz cały

if (phpbb_sessions.session_logged_in == 1)
Dobrze kombinuję?

A może lepiej wziąć zmienną phpbb_sessions.session_time i sprawdzać, czy nie jest starsza niż np. 5 minut, np:

Kod: Zaznacz cały

if (phpbb_sessions.session_time >= (time() - 300))
A z tego co widzę, to jest jeszcze jedna zmienna users_session_time ale umieszczona w tabeli phpbb_users, może więc sprawdzać ją?

A może jest jeszcze lepsze rozwiązanie?

Pozdrawiam i z góry dziękuję za odpowiedź.
http://www.ludziesportu.pl
Ludzie Sportu - strony domowe sportowców oraz osób kochających sport. Postaw na sport!

Awatar użytkownika
daroPL
Zasłużony
Posty: 4564
Rejestracja: 24 czerwca 2005, 13:36
Lokalizacja: Poznań
Kontakt:

Post autor: daroPL » 31 marca 2007, 08:00

W includes/usercp_viewprofile.php
Znajdz

Kod: Zaznacz cały

//
// Generate page
Dodaj przed

Kod: Zaznacz cały

if (($profiledata['user_session_time'] >= ( time() - 300 )) && ($profiledata['user_allow_viewonline']))
{
	$on_off_hidden = $lang['online'];
}
else if (($profiledata['user_session_time'] >= ( time() - 300 )) && ($profiledata['user_allow_viewonline'] == 0) && ($userdata['user_level'] == ADMIN))
{
	$on_off_hidden = $lang['hidden'];
}
else
{
	$on_off_hidden = $lang['offline'];
}
Znajdz

Kod: Zaznacz cały

'WWW' => $www,
Dodaj po

Kod: Zaznacz cały

'L_STATUS' => $lang['status'],
'STATUS' => $on_off_hidden, 
Znajdz Dodaj przed

Kod: Zaznacz cały

$lang['status'] = 'Status';
$lang['online'] = 'Dostępny';
$lang['hidden'] = 'Ukryty';
$lang['offline'] = 'Niedostępny';
i w templates/subSilver/profile_view_body.tpl dodaj gdzieś {L_STATUS} i {STATUS}

LudzieSportu
Posty: 5
Rejestracja: 17 października 2006, 17:42
Kontakt:

Post autor: LudzieSportu » 31 marca 2007, 11:12

Dzięki za pomoc, ale u mnie na portalu strona viewprofile nie istnieje, w zamian jest coś innego ;-)

Profil użytkownika wygląda mniej więcej tak:

http://bartosz-zajaczkowski.ludziesportu.pl.

Jak więć widać forum jest tylko dodatkiem do serwisu, chociaż logowanie się jest wspólne.

Więc ta zmiana w szablonie nie będzie działać.

Ale i tak dzięki, bo z tego kodu już dużo się nauczyłem. Chociażby tego, że profile mogą być ukryte, chociaż w portalu userzy nie mają dostępu do tej opcji, ale mogę się zastanowić nad jej udostępnieniem.

Czyli rozumiem, że kluczowym warunkiem jest (user_session_time >= ( time() - 300))
http://www.ludziesportu.pl
Ludzie Sportu - strony domowe sportowców oraz osób kochających sport. Postaw na sport!

Zablokowany

Wróć do „Pomoc”