Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] Po wyłączeniu przeglądarki okno pop-up
Forum PHP.pl > Forum > Przedszkole
CryWolf
Witam!
Jak zrobić, że od razu po wyłączeniu przeglądarki wyświetlało się okienko. Okno to służyć ma do wylogowywania. Bo jeżeli ktoś się nie wyloguje tylko wyłączy przeglądarke to u niego status pozostanie '1' i będzie ze niby caly czas jest OnLine. W wyloguj.php jest zapytanie zmieniające status usera na '0' .Kod wylogowywania mam tylko chodzi o samo okno po wyłączniu przglądarki.
Pozdrawiam i z góry dziękuję
drPayton
Niby jest javascript'owe window.onclose, ale z uwagi na to, że nie każda przeglądarka to wspiera nie można na tym polegać.
A takie rzeczy jak trzymanie informacji o zalogowaniu lepiej trzymać w sesji, na ciasteczkach o "długości życia" do zamknięcia przeglądarki.
l0co
Nie da się tego zrobić w ten sposób. Masz źle przemyślany mechanizm. Spróbuj przechowac status w sesji - wygaśnie wraz z czasem upłynięcia sesji.

Edit: A, widzę że już ktoś to napisał jak miałem otwarty formularz smile.gif
CryWolf
hmm, co proponujecie, moje logowanie wygląda tak:

  1. <?php
  2. function wy_form_logo() {
  3.  
  4. echo '
  5. <form action="index.php" method="POST">
  6. Login: <input type="text" name="login"><br>
  7. Hasło: <input type="password" name="haslo"><br><br> 
  8. <input type="submit" value="Zaloguj">  
  9. </form>';
  10.  
  11.  
  12. $login = $_POST['login'];
  13. $haslo = $_POST['haslo'];
  14.  
  15.  
  16. $pokazpieniadze = "SELECT login, haslo FROM users WHERE login='$login'";
  17. $wykonaj = mysql_query($pokazpieniadze);
  18. $found = false;
  19. while($wiersz = mysql_fetch_assoc($wykonaj)) {  
  20. if ($haslo == $wiersz['haslo'] && $login == $wiersz['login']) {  
  21. $_SESSION['user'] = $login;
  22. $_SESSION['pass'] = $haslo;
  23. echo '<big><b>Zalogowany!</big></b>';
  24. $data = date("j F Y, g:i"); 
  25. mysql_query("UPDATE profil SET zal = '$data' WHERE login = '". $_SESSION['user'] ."'");
  26. mysql_query("UPDATE users SET status = '1' WHERE login = '". $_SESSION['user'] ."'");
  27. echo '<META HTTP-EQUIV="Refresh" CONTENT="1;URL=start.php">';  
  28. $found = true;  
  29. break;  }
  30. }
  31. if(!$found) echo '<b><big>Chcesz dołączyć do reszty osób?</b></big><br><a href="rejestracja.php"><b>Rejestracja</b></a>';
  32. }
  33. ?>

?
l0co
A po co w ogóle w bazie wpisujesz status czy jest zalogowany? Jak będziesz miał ustawione np tylko $_SESSION['user'] to będziesz wiedział po tym czy jest zalogowany czy nie.
CryWolf
ale przypuśćmy że wejdę do kogoś na profil i co z tego że u niego jest $_SESSION['user'] jak ja tego nie zobaczę chyba, mogłbym prosić o jakiś przykład czy coś bo nie rozumiem za bardzo
l0co
Chyba rozumiem o co Ci chodzi - chcesz sprawdzić kto jest online tu jest taki wątek.
Generalnie najbardziej banalny schemat logowania jest taki:
user się loguje: $_SESSION['logged'] = true;
user się wylogowuje: session_destroy();

Teraz w zakresie użytkownika widzisz czy jest zalogowany czy nie i sesja automatycznie wygasa po ustawionym czasie. A jak chcesz spod innego użytkownika to sprawdzić to inna sprawa. Ja bym to zrobił tak, że w tabeli użytkowników byłoby też pole czasu "ostatniej operacji" - czyli odświeżenia strony przez użytkownika - jak odświeża stronę, to znacznik się aktualizuje. No i teraz przyjmujesz czas np. 15 min bez odświeżenia że użytkownika już nie ma i wyciągasz zalogowanych użytkowników na podstawie tego znacznika czasu.
CryWolf
Tak, o to mi chodzi, zaraz przejrze temat
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.