Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [HTML][MySQL][PHP]Nietrwała sesja logowania, Sesja zbyt szybko wyrzuca
programistaarek
post 15.07.2016, 09:57:04
Post #1





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 1.02.2015

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


Witam bardzo serdecznie mój problem polega na takiej zasadzie, że sesja zalogowanego użytkownika zbyt szybko wygasa. Problem dotyczy mojej przeglądarkowej gry. Gracz jest zalogowany i np wyłączy przeglądarkę lub wyjdzie z gry bez wylogowania po ponownym wejściu do gry przy zalogowaniu otrzymuje komunikat "Twoja sesja wygasła" a przecież się loguje na nowo. Kolejny problem to taki, że gracz jest zalogowany zamknę przeglądarkę na nowo ją uruchomię wejdę na grę jakaś podstrona i również komunikat,że "Twoja sesja wygasła". Kieruje do Was prośbę o to abyście mi pomogli. Oczekuję od Was pomocy takiej aby sesja w grze była trwała bez przerwania jedynie poprzez wylogowanie. Chodzi mi o to, że gracz się loguje wychodzi z gry zamyka przeglądarkę przychodzi za jakiś czas i znów ma zalogowane konto.
Tutaj mam kod logowania gracza:

  1. if(isset($_POST['loguj'])){ //Sprawdzamy, czy submit został wciśnięty
  2. $haslo = sha1($_POST['pass']);
  3. $zapytanie = $pdo->query("SELECT * FROM ustawienia");
  4. $zap = $zapytanie->fetch();
  5. $sprawdz = $pdo->prepare("SELECT * FROM uzytkownicy WHERE email=:email AND pass=:pass");
  6. $sprawdz->bindValue(':email', $_POST['email'], PDO::PARAM_STR);
  7. $sprawdz->bindValue(':pass', $haslo, PDO::PARAM_STR);
  8. $sprawdz->execute();
  9. $gracz = $sprawdz->fetch();
  10. if(empty($_POST['email']) OR empty($_POST['pass'])){
  11.  
  12. echo "
  13. <script type='text/javascript'>window.alert('Uzupełnij wszystkie dane');document.location.href = 'index.php';</script>
  14. ";
  15.  
  16. }elseif($zap['logowanie'] == 1 AND $gracz['ranga'] != 'Administrator'){
  17. echo "
  18. <script type='text/javascript'>window.alert('Trwają prace nad grą w najbliższym czasie zostanie ona uruchomiona');document.location.href = 'index.php';</script>
  19. ";
  20.  
  21. }elseif($gracz['aktywny'] == 0){
  22.  
  23. echo "
  24. <script type='text/javascript'>window.alert('Musisz aktywować konto');document.location.href = 'index.php';</script>
  25. ";
  26.  
  27. }else{
  28. //Usuwamy białe znaki z przesłanych danych
  29. $login = trim($_POST['email']);
  30. $password = trim($_POST['pass']);
  31. //Kodujemy hasło - przy rejestracji również je zakodowaliśmy, wiec przy porównywaniu musi być zakodowane
  32. $password = sha1($password);
  33. //Sprawdzamy czy użytkownik o podanych danych istnieje
  34. $stmt = $pdo->prepare("SELECT * FROM uzytkownicy WHERE email=:email AND pass=:password");
  35. $stmt->bindValue(":email", $login, PDO::PARAM_STR);
  36. $stmt->bindValue(":password", $password, PDO::PARAM_STR);
  37. $stmt->execute();
  38. $row = $stmt->fetch(PDO::FETCH_ASSOC);
  39. if($stmt->rowCount()!=0){
  40. 'cookie_lifetime' => 3600,
  41. 'read_and_close' => true,
  42. ]);
  43. $_SESSION = array();
  44. $_SESSION['gracz'] = $_POST['email'];
  45. $data = date("Y-m-d H:i:s");
  46.  
  47. $log = "Zalogowano na konto";
  48. $dodaj = $pdo->prepare("INSERT INTO `logi_gracze` (gracz, data, log, IP) VALUES(:gracz, :data, :log, :IP)");
  49. $dodaj->bindValue(":gracz", $gracz['id'], PDO::PARAM_INT);
  50. $dodaj->bindValue(":data", $data, PDO::PARAM_STR);
  51. $dodaj->bindValue(":log", $log, PDO::PARAM_STR);
  52. $dodaj->bindValue(":IP", $_SERVER['REMOTE_ADDR'], PDO::PARAM_STR);
  53. $dodaj->execute();
  54. echo '<meta http-equiv="Refresh" content="1; url=gra.php" />';
  55.  
  56. echo "
  57. <script type='text/javascript'>window.alert('Zalogowano na konto');document.location.href = 'gra.php';</script>
  58. ";
  59.  
  60.  
  61. /*
  62.   * Tworzymy sesję dla zalogowanego użytkownika z:
  63.   * - informacją, że użytkownik jest zalogowany
  64.   * - jego id
  65.   */
  66.  
  67.  
  68. }
  69. else{
  70.  
  71. echo "
  72. <script type='text/javascript'>window.alert('Złe dane');document.location.href = 'index.php';</script>
  73. ";
  74.  
  75. form();
  76. }
  77. }
  78. }

A tutaj kod który nas wyrzuca za brak sesji:

  1. 'cookie_lifetime' => 3600,
  2. 'read_and_close' => true,
  3.  
  4.  
  5. ]);
  6.  
  7. if(empty($_SESSION['gracz'])){
  8. echo("<script type='text/javascript'>window.alert('Twoja sesja wygasła zaloguj się ponownie');document.location.href = 'index.php';</script>");
  9.  
  10. die();
  11. }
  12.  


Bardzo proszę o pomoc.
Pozdrawiam i czekam na odpowiedź smile.gif


--------------------
Go to the top of the page
+Quote Post
Wazniak96
post 15.07.2016, 19:04:03
Post #2





Grupa: Zarejestrowani
Postów: 550
Pomógł: 75
Dołączył: 5.06.2012
Skąd: Lębork

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


Użyj ciastek zamiast sesji, to tyle.
Go to the top of the page
+Quote Post
programistaarek
post 15.07.2016, 19:47:02
Post #3





Grupa: Zarejestrowani
Postów: 116
Pomógł: 0
Dołączył: 1.02.2015

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


Gdybym wiedział jak to bym tego użył, ale dzięki za trop poczytam o tym smile.gif


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 26.04.2024 - 19:57