Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zalogowaniu userzy
Forum PHP.pl > Forum > PHP
Ethel
Witam, mój problem polega na tym iż niemam pojęcia jak się wziąść do napisania skryptu który będzie wypisywał mi liste użytkowników którzy aktualnie są online (zalogowani). Mój system logowania opiera się na bazie danych i kodzie identyfikacyjnym przekazywanym w url'u jako zmienna, następnie przy wyciąganiu danych użytkownika do zapytań dodaje poprostu
Kod
WHERE <pole tabeli>='$kod_identyfikacyjny'


Myślałem o dodaniu do bazy mySQL pola "online" i w zależności czy byłby online czy też ofline pole przyjmowało by wartości "0" i "1", oczywiście wiem jakby ustawić w polu "1" (żeby było online) - przy logowaniu dodać zapytanie do mySQL które zmieniało by to pole na "1". Ale pojawia sie problem przy wylogowywaniu. Otóż gdy użytkownik poprostu zamknie przeglądarke to niewiem co zrobić żeby pole ustawiło się na "0". Gdyby użytkownik klikał np. "wyloguj" to było by miodzio bo wtedy do pliku wylogywującego wpisałbym poprostu zapytanie ustawiające pole "online" na "0". Ale oczywiście prawie nikt nie klikałby "wyloguj" tylko gdy już zrobi co ma zrobić "online" to wyłączy przeglądarke albo przejdzie na inną strone i cenzura ... byłoby że niby jest cały czas online ...

Jeśli dobrze kombinuje to powiedzccie co mam zrobić żeby sie samo wylogowywało.

Jeśli źle kombinuje a znacie jakiś inny sposób to powiedzcie.

Z góry dzięki.

poprawki by nospor
strife
Witam,

Kiedyś napisałem coś takiego http://forum.php.pl/index.php?showtopic=28296, ile userów jest online, sprawdzić to możesz po prostu licząć ilość rekordów w bazie.

Pozdrawiam!
Ethel
Hmmm ... szczerze to nic nie rozumiem z tego kodu co napisałeś ... pozatym chyba źle mnei zrozumiałeś, nie chce mieć liczby osób online, chciałbym mieć ich liste.
Np. mam 5 userów w bazie:
1.Władek
2.Zdzichu
3.Zbychu
4.Zenek
5.Franek

Zenek i Zdzichu są zalogowani (online) i chcialbym aby mi wypisało w jakiejś tabelce ich nicki. Po chwili Zenek sie wylogował i w tym momencie jeśli urzytkownik odświerzy strone to chciałbym aby Zobaczył w liście online samego Zdzicha. Natomiast po chwili loguje sie zbychu i chciałbym aby po odświerzeniu pokazało i Zdzicha i Zbycha w liście. Na tym miało by to polegać.

Np. jest coś podobnego w forum phpBB na samym dole w "ministatystykach" forum jest lista osób online (tak samo jak jest i na tym forum).
strife
Tak więc tamten skrypt możesz łatwo sobie przerobić, po zalogowaniu do kolejnego pola doda się nazwa zalogowanego user'a. Wtedy robisz SELECT'a pokazującego wszystkie rekordy z tej tabeli i masz ilu gości jest online i kto jest zalogowany. Należało by stworzyć taką bazę.
Kod
r_sid | r_where | r_ip  | r_time | r_who


I teraz gdy logujesz się na stronie to szukasz r_sid i update'ujesz rekord dodając r_who jako nazwę zalogowanej osoby, w przeciwnym wypadku osoba ta zostanie tylko gościem.
  1. <?php
  2.  
  3. // ... tutaj skrypt logowania jeśli login i haslo poprawne loguje i robi update
  4. $z = mysql_query("UPDATE action SET r_who '" . $_POST['name'] . "' WHERE r_sid = '" . session_id() . "' ");
  5.  
  6. ?>


Oczywiście do tego możesz dodać kolejne rekordy takie jak np. id user'a aby go łatwo wyłapać i ew. pokazać jego dane na stronie bez kolejnego zapytania.

Jeśli ma wyłapywać tylko zalogowanych to musisz dodać warunek aby pokazywał wszystkich którzy != NULL w polu r_who.

Pozdrawiam!
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.