![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 0 Dołączył: 9.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Chcę zrobić aby pokazywało mi ilość użytkowników, którzy się zalogowali.(loguje się na sesjach). Nie wiem jak się do tego zabrać. Czy jakieś nowe pole w bazie... czy obsługa cookie's lub w jakiś sposób użyć crona. Dobrze aby np. po 2 min samo się wylogowywało. Dziękuje z góry za pomoc ;p
Ten post edytował Loped 9.04.2009, 12:02:39 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 6 Dołączył: 14.02.2007 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Tworzysz tabele online
id | login | data (DATETIME) podczas logowania dodajesz usera do bazy login i date ( NOW() ) Jak user chodzi po stronie to dajesz UPDATE where login=$_SESSION['login'] a oprócz tego skrypt kasujący gdzie data jest starsza od 2 minut czy jakoś tak Dobrze zrobić też wybór danych z tej tabeli gdzie login=$_SESSION['login'] i jeżeli jest brak to dodajesz insertem login i date (bo npuser może chodzić po stronie zacznie czytać artykuł przez 10 minut a w tym czasie go skasuje z bazy bo czyta dluzej niz 2 minuty a jak przejdzie na inna czesc strony to go znowu dodaje ilepiej daj na 10-15 minut z tym wylogowaniem bo 2min to za krótko. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 589 Pomógł: 91 Dołączył: 22.05.2008 Skąd: Gliwice Ostrzeżenie: (0%) ![]() ![]() |
Najlepszym rozwiązaniem będzie użycie Session Handlera, o którym jest artykuł w wortalu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 0 Dołączył: 9.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam zrobione coś takiego:
Kod <?php require('includes/sessions.php'); require('includes/config.php'); $czas=mktime(); $ip=$_SERVER['REMOTE_ADDR']; $staryczas=mktime()-120; mysql_query("DELETE FROM online WHERE time<'$staryczas'"); $link=mysql_query("SELECT ip FROM online WHERE ip='$ip'"); $ile=mysql_num_rows($link); if (isset($_SESSION['prawid_uzyt']) && $ile==0) { mysql_query("INSERT INTO online VALUES(NULL,'$ip','$czas')"); } else { mysql_query("UPDATE online SET czas='$czas' WHERE ip='$ip'"); } $link=mysql_query("SELECT * FROM online"); $ile=mysql_num_rows($link); echo 'Osób online: '.$ile.' '; ?> Jak się zaloguje, i odświeżę to dodaje mnie do tabeli "online" lecz po 2 min nieobecności mnie nie kasuje... |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 162 Pomógł: 6 Dołączył: 14.02.2007 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
a w time masz DATE TIME czyDATETIME ?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 0 Dołączył: 9.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Juz naprawione. Podałem złe pole ;P. Ale jeszcze jedno pytanie. Czy ten skrypt jest bezpieczny? Czy nie zaśmieci mi zbytnnio bazy? I jak zrobić jak sie wylogowuje to od razu mnie kasowało w tej tabeli "online"?
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 30.12.2007 Skąd: Somewhere in Poland Ostrzeżenie: (0%) ![]() ![]() |
Do skryptu który usuwa sesje dopisz część do usuwania wpisów z tabeli po uzytym loginie.
Ten post edytował mcgsoft 9.04.2009, 12:35:33 |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 0 Dołączył: 9.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zrobiłem tak, ze dodaje nazwe użytkownika zalogowanego do tabeli online. Jak mam zrobić aby wyświetlało mi coś w stylu "Użytkownicy online: Loped, blabla "
jak powinien wyglądać ten kod? ;P |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 30.12.2007 Skąd: Somewhere in Poland Ostrzeżenie: (0%) ![]() ![]() |
W telegraficznym skrócie:
mniej więcej. Ten post edytował mcgsoft 9.04.2009, 12:58:36 |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 0 Dołączył: 9.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Teraz mam taki problem.. Kiedy nie jestem zalogowany jest ok. Ale jak sie zaloguje i wylogowuje czas nadal się zmienia w tabeli "online" po odświeżeniu strony. o to kod:
Kod if (isset($_SESSION['prawid_uzyt']) || $ile==0)
{ mysql_query("INSERT INTO online VALUES(NULL,'$ip','$czas', '$nazwa_uz')"); } else { mysql_query("UPDATE online SET czas='$czas' WHERE ip='$ip'"); } |
|
|
![]()
Post
#11
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
zacznij uzywac wlasciwego bbcode [php]
No przeciez niewazne co, ty albo dodajesz albo updatujesz , wiec sie nie dziw ze ciagle cos sie zmienia (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) edit: a jesli chodzili ci o inserta, to albo isset($_SESSION['prawid_uzyt']) albo $ile==0 jest prawdziwe, wiec ci robi inserta |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 0 Dołączył: 9.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jeszcze jedno pytanie ^^. Jak zrobić aby np. po 10 min automatycznie wylogowywało(kończyło sesje)?
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 30.12.2007 Skąd: Somewhere in Poland Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 74 Pomógł: 4 Dołączył: 7.03.2008 Ostrzeżenie: (0%) ![]() ![]() |
alternatywnie: na plikach sesji pod warunkiem ze dla kazdej domeny pliki sesji trzymane sa w osobnych katalogach tmp w przeciwnym wypadku wynik jest zafalszowany, plus rozwiazania brak obciazenia bazy
function users_online() { if ( $directory_handle = opendir( session_save_path() ) ) { $count = 0; while ( false !== ( $file = readdir( $directory_handle ) ) ) { if($file != '.' && $file != '..') { $count++; } } closedir($directory_handle); return $count; } else { return '1'; } } |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 120 Pomógł: 0 Dołączył: 9.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam coś takiego:
Kod $span = (time() - 180); $la = $lacz -> query("SELECT nazwa_uz FROM uzytkownik WHERE czas>=".$span." ORDER BY id ASC"); Jak mam napisac pętle while do tego aby pokazywało mi nicki zalogowanych? ;P |
|
|
![]()
Post
#16
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Przeczytaj jakiś kurs PHP+MySQL... Nie będziemy budować wież bez cegieł, czyli skryptów bez podstaw.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 25.08.2025 - 01:29 |