Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php][mysql]Zapisanie sesji w bazie
OlgaG
post 26.01.2008, 22:19:30
Post #1





Grupa: Zarejestrowani
Postów: 44
Pomógł: 0
Dołączył: 8.04.2007

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


Napisałam własną funkcję obsługi sesji - tak by dane sesji były zapisywane w bazie danych. Dane zapisują się, ale mam problem z kasowaniem danych sesji w bazie.

Całość funkcji jest zapisana w klasie DatabaseSessionStorage.

W klasie DatabaseSessionStorage jest funkcja distroy(), która odpowiada za kasowanie danych sesji z bazy:
  1. <?php
  2. //metoda destroy usuwa wszystkie rekordy dla danego identyfikatora sesji, zwraca T
    RUE lub FALSE
  3. public static function distroy($id)
  4. {
  5. //dla bezpieczeństwa filtrujemy id sesji
  6. $id = self::$s_conn->real_escape_string($id);
  7.  
  8. $query = "DELETE FROM ap_sessiondata WHERE session_id = '$id';";
  9.  
  10. //zapytanie do bazy
  11. $result = self::$s_conn->query($query);
  12.  
  13. //jeśli wystąpiły błędy
  14. if(self::$s_conn->errno !=0)
  15. {
  16. return FALSE;
  17. }
  18. else
  19. {
  20. return TRUE;
  21. }
  22.  
  23. }
  24. ?>


W pliku session_test.php mam skrypt, który ma wykorzystywać tą funkcję do kasowania danych sesji z bazy:

  1. <?php
  2. /* Włączenie pliku obsługi sesji */
  3. require_once("libs/db_session.inc.php");
  4. $session = new DatabaseSessionStorage();
  5.  
  6. /* Rozpoczęcie sesji*/
  7.  
  8. if(empty($_SESSION))
  9. {
  10. $_SESSION['user'] = 'uzytkownik';
  11. }
  12.  
  13.  
  14. if(isset($_POST['logout']))
  15. {
  16. $id = session_id();
  17. $session->distroy($id);
  18. echo "Sesję zakończono";
  19. }
  20. else
  21. {
  22. echo '
  23. <form method="POST" action="session_test.php">
  24. <input type="submit" name="logout" value="Wyloguj się" />
  25. </form>
  26. ';
  27. }
  28.  
  29.  
  30. ?>
  31. </body>
  32. </html>
  33. <?php session_write_close(); ?>


Problem polega na tym, ze dane sesji zapisują się w bazie, ale nie kasują się. Po naciśnięciu przycisku "wyloguj się" skrypt przechwytuje zmienną $_POST, zapytanie do bazy "DELETE..." jest prawidłowe(sprawdziłam print-em ), ale dane dalej są w bazie.

Zastanawiam się czy nie potrzeba jakiegoś potwierdzenia, że chcę skasować te dane z tabeli.

Czy ktoś wie, jak rozwiązać ten problem?
Go to the top of the page
+Quote Post

Posty w temacie


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.08.2025 - 23:41