Strona 1 z 1

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

: 30 marca 2007, 17:28
autor: LudzieSportu
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ź.

: 31 marca 2007, 08:00
autor: daroPL
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}

: 31 marca 2007, 11:12
autor: LudzieSportu
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))