![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 24.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
szperałem po forum w poszukiwaniu opisu zastosowania sesji php w połączeniu z bazą danych. Czytałem artykuł o SESSION HANDLER'ach, ale niestety OOP nie jestem w stanie zrozumieć (wolę strukturalne podejście do php). Moje pytanie do Was: Jak zabrać się za sesje połączone z MySQL? User loguje się, sprawdzamy login i hasło i jeśli wszystko jest OK zapisujemy dane sesji do tabeli MySQL? (Jeśli tak, to jakie dane?) A jak się takie sesje usuwa z tabeli po wylogowaniu? Mam na myśli: jak usunąć dane sesji z tabeli jeśli user zamknie przeglądarke i nie użyje przycisku WYLOGUJ? Nie powstają wtedy dane-śmieci w tabeli? Proszę o jakiś wypunktowany algorytm/wskazówki jak po kolei zastosować php+Sesje+MySQL (bez OOP). Czytałem chyba wszystkie posty o sesjach i MySQL ale żaden nie dał mi przejrzystego sposobu postępowania. Pozdrawiam. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 24.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
1. Pobierz ID istniejącej sesji (przez ciasteczka lub GET/POST) - jezeli nie istnieje skocz do punktu 4
2. Pobierz dane sesji i użytkownika z MySQL a jezeli nie istnieje skocz do punktu 4 3. Uaktualnij ostatni czas sesji i skocz do punktu 7 4. Sprawdz czy istnieje nazwa użytkownika i hash hasła w ciasteczkach jeżeli tak to pobierz dane użytkownika i spradz ich poprawność 5. Usuń przestarzałe sesje i jeżeli punkt 4 zakończył się niepowodzeniem usuń sesje o identycznym adresie IP co nowe żądanie, jeżeli zakończył sie powodzeniem to usuń poprzednie sesje tego samego użytkownika 6. Wprowadź dane nowej sesji do MySQL 7. Koniec Mam nadzieje, że chociaż trochę przybliżyłem idee. -------------------- If you can't find a program that does what you want it to do, then write your own.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Przyjaciele php.pl Postów: 698 Pomógł: 3 Dołączył: 28.03.2004 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Od usuwania niepotrzebnych danych masz garbage collector. Wszystko jest opisane w manualu - session_set_save_handler" title="Zobacz w manualu php" target="_manual.
-------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 24.06.2006 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za podpowiedzi.
Mam do Was jednak pytanie: Która metoda obsługi sesji jest lepsza? Za pomocą bazy danych MySQL czy normalnie za pomocą cookies, SIDów itp. ![]() Druga metoda jest cobądź łatwiejsza... |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 39 Pomógł: 0 Dołączył: 24.11.2003 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za podpowiedzi. Mam do Was jednak pytanie: Która metoda obsługi sesji jest lepsza? Za pomocą bazy danych MySQL czy normalnie za pomocą cookies, SIDów itp. ![]() Druga metoda jest cobądź łatwiejsza... Która lepsza... to już zależy od upodobania programisty i założeń skryptu. I w jednej i drugiej metodzie można osiągnąć identyczny efekt tyle, że inną drogą. Mając wszystkie sesje w bazie masz większe pole manewru IMO ale to też zależy od „widzimisie” programisty – np. jednym zapytaniem SQL możesz pobrać, przefiltrować, posortować aktywnych użytkowników, podczas gdy sesje bazujące na plikach trzeba wczytać każdy plik i przeanalizować ich zawartość ręcznie. BTW Sesje na podstawie bazy danych też wymagają przekazywania identyfikatora przez ciastka lub GET/POST ![]() -------------------- If you can't find a program that does what you want it to do, then write your own.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 22.04.2006 Skąd: Tarnów Ostrzeżenie: (0%) ![]() ![]() |
Obróbka danych w sqlowej bazie danych jest mniej zasoborzerna niz w bazie na plikach txt. Do tego kwestia bezpieczeństwa.
Stosując "własny" session handler oparty na bazie sql masz wieksze możliwośći jesli np. tworzysz sobie statystyki (choć tu lepiej urzyc tych od wuja googla ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 01:48 |