Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przechowywanie sesji w bazie MySQL
Forum PHP.pl > Forum > PHP
cichy19-
Witam,

Przerabiam skrypt aby sesje były przechowywane w bazie danych MySQL.
W głównym pliku w którym wcześniej była tylko funkcja session_start() wstawiłem przed nią poniższy plik przez include sessions.inc.php

  1. <?php
  2. if(!$SessLife = get_cfg_var('session.gc_maxlifetime')) {
  3. $SessLife = 1440;
  4. }
  5.  
  6. function SessOpen($save_path, $session_name) {
  7. return true;
  8. }
  9.  
  10. function SessClose() {
  11. return true;
  12. }
  13.  
  14. function SessRead($key) {
  15. $ValueQuery = mysql_query("SELECT session_value FROM sessions WHERE session_id='".$key."' AND session_expiry>'".time()."'");
  16. $value = mysql_fetch_array($ValueQuery);
  17.  
  18. if(isset($value['session_value'])) {
  19. return $value['session_value'];
  20. }
  21.  
  22. return false;
  23. }
  24.  
  25. function SessWrite($key, $val) {
  26. global $SessLife;
  27.  
  28. $expiry = time() + $SessLife;
  29. $value = $val;
  30.  
  31. $CheckQuery = mysql_query("SELECT count(*) as total FROM sessions WHERE session_id='".$key."'");
  32. $check = mysql_fetch_array($CheckQuery);
  33.  
  34. if($check['total'] > 0) {
  35. return mysql_query("UPDATE sessions SET session_expiry='".$expiry."', session_value='".$value."' WHERE session_id='".$key."'");
  36. } else {
  37. return mysql_query("INSERT INTO sessions VALUES ('".$key."', '".$expiry."', '".$value."')");
  38. }
  39. }
  40.  
  41. function SessDestroy($key) {
  42. return mysql_query("DELETE FROM sessions WHERE session_id='".$key."'");
  43. }
  44.  
  45. function SessGc($maxlifetime) {
  46. mysql_query("DELETE FROM sessions WHERE session_expiry<'".time()."'");
  47.  
  48. return true;
  49. }
  50.  
  51. session_set_save_handler('SessOpen', 'SessClose', 'SessRead', 'SessWrite', 'SessDestroy', 'SessGc');
  52. ?>


Niby wszystko jest dobrze bo sesje zapisują się w bazie jednak problem jest w tym że nie można zalogować się do serwisu.
Nie pokazuje żadnego błędu tylko odświeża stronę.
Dodam że w pliku logowania przy poprawnym wpisaniu danych mam poniższy kod:

  1. <?php
  2. $_SESSION["zalogowany_id"] = intval(mysql_result($Result, 0, "id"));
  3. $_SESSION["zalogowany_nick"] = stripslashes(mysql_result($Result, 0, "nick"));
  4. ?>


Bardzo proszę o pomoc i z góry dziękuję.

Nikt mi nie pomoże w tym temacie?

Nadal brak jakiejkolwiek odpowiedzi sad.gif
nospor
Cytat
Nadal brak jakiejkolwiek odpowiedzi

Wiemy, widzimy, nie musisz podbijac tematu i nas o tym informowac. Wykaż się odrobiną cierpliwosci, bo widze ze juz chyba którys raz skolei dzis podbijasz ten temat.

A na normalnej sesji (nie twojej) twoj skrypt logowania dziala?
cichy19-
Tak na normalnej sesji logowanie działa.
nospor
No to musisz debugowac swoj skypt. Po kazdym odczycie/zapisie robic echo/print_r by sprawdzac czy masz wlasciwe dane. W ten sposob dojdziesz do miejsca gdzie masz byka i sie na nim skupisz.
cichy19-
A może jest tu brak funkcji takich jak: session_register i session_write_close ?

Próbowałem i z tym. Niestety nic nie pomaga sad.gif
Pomocy
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.