Całość funkcji jest zapisana w klasie DatabaseSessionStorage.
W klasie DatabaseSessionStorage jest funkcja distroy(), która odpowiada za kasowanie danych sesji z bazy:
<?php //metoda destroy usuwa wszystkie rekordy dla danego identyfikatora sesji, zwraca T
RUE lub FALSE { //dla bezpieczeństwa filtrujemy id sesji $id = self::$s_conn->real_escape_string($id); $query = "DELETE FROM ap_sessiondata WHERE session_id = '$id';"; //zapytanie do bazy $result = self::$s_conn->query($query); //jeśli wystąpiły błędy if(self::$s_conn->errno !=0) { return FALSE; } else { return TRUE; } } ?>
W pliku session_test.php mam skrypt, który ma wykorzystywać tą funkcję do kasowania danych sesji z bazy:
<?php /* Włączenie pliku obsługi sesji */ require_once("libs/db_session.inc.php"); $session = new DatabaseSessionStorage(); /* Rozpoczęcie sesji*/ { $_SESSION['user'] = 'uzytkownik'; } { $session->distroy($id); } else { echo ' <form method="POST" action="session_test.php"> <input type="submit" name="logout" value="Wyloguj się" /> </form> '; } ?> </body> </html>
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?