Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySql]Wylogowanie w mysql
Forum PHP.pl > Forum > Przedszkole
Pawolko
Witam, szukałem odpowiedzi na mój problem i nie mogę znaleźć, choć wiem, że można to rozwiązać używając Time().

Chciałbym by po upływie sesji np 2 minutach wylogowało użytkownika nie tylko niszcząc sesje, ale także zmieniając wartość w mysql, tak aby efekt był widoczny też po stronie serwera, prosił bym o przykład, bo mniej/więcej wiem jak by to musiało działać, lecz mi nie wychodzi ;/
golaod
Każda akcja użytkownika niech zapisuje timestamp w bazie i ta sama akcja niech wywołuje przy okazji zapytanie typu 'usun wszystkich uzytkownikow o czasie wiekszym niz 2 minuty' (liczac za pomoca timestamp aktualny - timestamp zapisany.
Pawolko
Tak jak pisałem wyżej, wiem że chodzi o ten time, ale mi nie wychodzi dlatego prosiłem o przykład, nie wiem czy wina jest po stronie skryptu, czy robię źle bazę.

Przypuśćmy że skrypt jest taki (znalazłem gdzieś na tej stronie w archiwum, nie pamiętam linka):

mysql_query("UPDATE users SET aktywnosc = ".time()." WHERE login = '{$login}'");
;p
ale nie wiem jak zrobić bazę bo ten timestamp w bazie nie zmienia czasu, czytałem, że robi to przy akcji, więc się w tym wszystkim pogubiłem smile.gif
peter13135
UPDATE users SET aktywny=0 WHERE data_aktywnosci< time()-120


edit:// dzięki takiemu sposobowi będziesz miał aktywny=1 przy zalogowanych userach i 0 przy niezalogowanych, ale na moje oko taa kolumna jest nie potrzebna, bo po prostu możesz pobierać zalogowanych userów za pomocą
  1. SELECT * FROM users WHERE data_aktywnosci>now()-120

i niezalogowanych zmieniając znak > na =<
Pawolko
Tak, i to zadziała z taką kolumną:, bo jak już pisałem czas się nie zmienia ;/
  1. ALTER TABLE `users` CHANGE `aktywnosc` `aktywnosc` TIMESTAMP NOT NULL
peter13135
mj przykład dotyczył rzaczej kolumny typu integer tongue.gif
Pawolko
Tak więc, zrobiłem Aktywnosc pod integer, oto moje nie dziłające wypociny:

sprawdza czy aktywny, ale chyba źle tablice zrobiłem?
  1. $login[] = mysql_query(" SELECT login FROM users WHERE aktywnosc>now()-120 ");
  2.  
  3.  
  4. if (!empty($login[$_SESSION['login']])){
  5.  
  6. $_SESSION["zalogowany"]=1;
  7. $_POST["login"] = $_SESSION['login']; }
  8. else {
  9. $_SESSION["zalogowany"]=0;
  10. }
  11.  


Przy zalogowaniu robi się takie coś:
  1. mysql_query("UPDATE users SET aktywnosc = ".time()." WHERE login = '{$login}'");


a tabela ustawia w aktywności "1314601930" i nic się nie zmienia

Może wyślij gotowy przykład php i mysql smile.gif
peter13135
o gotowce możesz prosić w dziale giełda wink.gif

1. Znajdź sobie jakikolwiek kurs pobierania danych z bazy. Nie chce mi się tumaczyć Tobie dlaczego to jest źle, bo wszystko masz w necie.
2. Pobieranie wiele rekordów by potem sprawdzić jeden, jest nieoptymalne.
3. Przypisywanie wartości elementom tablicy $_POST nie jest najlepszą praktyką
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.