Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przechowywanie sesji w bazie MySQL
cichy19-
post 14.07.2008, 13:37:27
Post #1





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 5.06.2006

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


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

Ten post edytował cichy19- 14.07.2008, 09:38:03
Go to the top of the page
+Quote Post
nospor
post 14.07.2008, 13:46:04
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cichy19-
post 14.07.2008, 13:52:42
Post #3





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 5.06.2006

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


Tak na normalnej sesji logowanie działa.
Go to the top of the page
+Quote Post
nospor
post 14.07.2008, 13:57:04
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
cichy19-
post 14.07.2008, 21:27:04
Post #5





Grupa: Zarejestrowani
Postów: 100
Pomógł: 0
Dołączył: 5.06.2006

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


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

Ten post edytował cichy19- 14.07.2008, 21:26:49
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: 13.06.2025 - 00:40