![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 7 Dołączył: 6.09.2011 Skąd: Olsztyn Ostrzeżenie: (0%) ![]() ![]() |
Witam, chciałbym zrobić moduł, który wyświetli mi listę zalogowanych użytkowników. (coś w stylu jak znajomi na facebooku czy nk). Zapisuję sesje do bazy danych:
Kod storage: class: sfPDOSessionStorageOverride param: session_name: pracainz db_table: session database: propel db_id_col: session_id db_data_col: session_value db_time_col: session_time Nadpisałem metodę sessionWrite klasy sfPDOSessionStorage: Kod class sfPDOSessionStorageOverride extends sfPDOSessionStorage { public function sessionWrite($id, $data) { // get table/column $db_table = $this->options['db_table']; $db_data_col = $this->options['db_data_col']; $db_id_col = $this->options['db_id_col']; $db_time_col = $this->options['db_time_col']; $db_user_id_col = 'user_id'; $user = sfContext::getInstance()->getUser(); $user_id = false; if ($user->isAuthenticated()) { $user_id = $user->getGuardUser()->getId(); } if ($user_id && ($user_id>0)) { $sql = 'UPDATE '.$db_table.' SET '.$db_user_id_col.'= ?, '.$db_data_col.' = ?, '.$db_time_col.' = '.time().' WHERE '.$db_id_col.'= ?'; try { $stmt = $this->db->prepare($sql); $stmt->bindParam(1, $user_id, PDO::PARAM_STR); $stmt->bindParam(2, $data, PDO::PARAM_STR); $stmt->bindParam(3, $id, PDO::PARAM_STR); $stmt->execute(); } catch (PDOException $e) { throw new sfDatabaseException(sprintf('PDOException was thrown when trying to manipulate session data. Message: %s', $e->getMessage())); } } else { $sql = 'UPDATE '.$db_table.' SET '.$db_data_col.' = ?, '.$db_time_col.' = '.time().' WHERE '.$db_id_col.'= ?'; try { $stmt = $this->db->prepare($sql); $stmt->bindParam(1, $data, PDO::PARAM_STR); $stmt->bindParam(2, $id, PDO::PARAM_STR); $stmt->execute(); } catch (PDOException $e) { throw new sfDatabaseException(sprintf('PDOException was thrown when trying to manipulate session data. Message: %s', $e->getMessage())); } } return true; } } Dodałem kolumnę, która będzie przy sesji wpisywać id użytkownika, który się zalogował ale jest inny problem... Otóż przy otwarciu strony z formularzem logowania sfGuardPlugin do bazy dodawany jest rekord. Np taki: Cytat 8nnope4knm9l56p1brabjvt5c3 symfony/user/sfUser/lastRequest|i:1323421511;symfo... 1323421512 0 Następnie przy faktycznym zalogowaniu użytkownika na stronę tworzony jest kolejny rekord: Cytat epervhmgatp2t45rpc383u24j7 symfony/user/sfUser/lastRequest|i:1323421619;symfo... 1323421620 1 No i przy wylogowaniu jeszcze jeden rekord jest wstawiany do bazy: Cytat 1rq7q4g4vb94doodenr7k45rc4 symfony/user/sfUser/lastRequest|i:1323421654;symfo... 1323421654 0 No i teraz pytanie. Jak zgrać to wszystko aby po wylogowaniu rekord danego użytkownika został skasowany a nie wpisywany nowy? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 17.10.2025 - 13:51 |