Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]system logowania dla trzech użytkowników - jeden online
art998
post
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 0
Dołączył: 14.10.2016

Ostrzeżenie: (0%)
-----


Dzień dobry, czy można jakoś dostosować ten skrypt logowania ( lub podsunąć jakiś pomysł ) jak zrobić logowanie do programu aby zalogowany mógł być TYLKO JEDEN użytkownik (pozostali dostają info o braku możliwości zalogowania)
W bazie userów mam tylko trzy osoby i więcej nie będzie.

Próbowałem dodać dodatkowe pole które wskazywało, że jest ktoś już zalogowany ale po zamknięciu przeglądarki ( nie przez opcję wyloguj) wszystko bierze w łeb ;-)
Kombinowałem też z czasem ostatniej aktywności i po określonym czasie automatyczne wylogowanie lecz to rozwiązanie nie za bardzo mogę zastosować.
Zakładam też, że nie można przejąć sesji zalogowanego użytkownika i wylogować go z innego kompa.

Mam jeszcze pytanie czy zadanie crona do wykonania co 10 min bardzo obciąża serwer?

Przykładowy system logowania:
  1. <?php
  2. if ((!isset($_POST['login'])) || (!isset($_POST['haslo'])) )
  3. {
  4. header('Location: index.php');
  5. exit();
  6. }
  7. require_once "connect.php";
  8. $polaczenie = @new mysqli($host, $db_user, $db_password, $db_name);
  9. if ($polaczenie->connect_errno!=0)
  10. {
  11. echo "Error: ".$polaczenie->connect_errno;
  12. }
  13. else
  14. {
  15. $login = $_POST['login'];
  16. $haslo = $_POST['haslo'];
  17.  
  18. $login = htmlentities($login, ENT_QUOTES, "UTF-8");
  19. $haslo_hash = password_hash($haslo, PASSWORD_DEFAULT);
  20.  
  21. if ($rezultat = @$polaczenie->query(
  22. sprintf("SELECT * FROM log_user WHERE user='%s'",mysqli_real_escape_string($polaczenie,$login))))
  23. {
  24. $ilu_userow = $rezultat->num_rows;
  25. if($ilu_userow>0)
  26. {
  27. $row = $rezultat->fetch_assoc();
  28.  
  29. if (password_verify($haslo, $row['pass']))
  30. {
  31. $_SESSION['zalogowany'] = true;
  32. $_SESSION['id'] = $row['id'];
  33. $_SESSION['user'] = $row['user'];
  34.  
  35. unset($_SESSION['blad']);
  36. $rezultat->free_result();
  37. header('Location: prog/zamowienie.php');
  38. }
  39. else
  40. {
  41. $_SESSION['blad'] = 'Nieprawidłowy login lub hasło !';
  42. header('Location: index.php');
  43. }
  44. }
  45. }
  46. }
  47.  
  48. $polaczenie->close();
  49. ?>
  50.  
  51.  
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
leonpro778
post
Post #2





Grupa: Zarejestrowani
Postów: 146
Pomógł: 19
Dołączył: 1.03.2012

Ostrzeżenie: (0%)
-----


Cytat(art998 @ 24.10.2018, 10:22:39 ) *
Kombinowałem też z czasem ostatniej aktywności i po określonym czasie automatyczne wylogowanie lecz to rozwiązanie nie za bardzo mogę zastosować.


Czemu nie możesz zastosować? Przecież taki timeout jest dla Ciebie właśnie dobrym rozwiązaniem.

Jeżeli chcesz innego rozwiązania to możesz również zrobić to w sposób następujący. Masz dodatkową tabelę tokens i przy logowaniu przypisujesz unikalny token dla użytkownika (przechowuj go przykładowo w sesji). Następnie ważność tokenu ustaw na 10 min i przedłużaj go przy każdej aktywności użytkownika.

Przy próbie zalogowania użytkownika sprawdzasz czy jest aktywny jakiś token i jeżeli jest to nie logujesz użytkownika.

Ten post edytował leonpro778 24.10.2018, 11:13:02
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 05:52