Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: php+Sesje+MySQL
Forum PHP.pl > Forum > PHP
Mr. Jigsaw
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.
ksiadz
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.
Ludvik
Od usuwania niepotrzebnych danych masz garbage collector. Wszystko jest opisane w manualu - session_set_save_handler" title="Zobacz w manualu php" target="_manual.
Mr. Jigsaw
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.questionmark.gif

Druga metoda jest cobądź łatwiejsza...
ksiadz
Cytat(Mr. Jigsaw @ 25.06.2006, 00:21 ) *
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.questionmark.gif

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 smile.gif
wieja
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 smile.gif ale np. jesli potrzebujesz narzedzia do analizy zachowań poszczegulnych urzytkowników (strony www lub systemu intranetowego) to bardzo łatwo można session handlera poszerzyć o taką funkcjonalność (zbieranie danych - bo analiza to juz inna brocha).
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.