Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Koszyk w sesji czy w bazie?
usb2.0
post
Post #1





Grupa: Zarejestrowani
Postów: 341
Pomógł: 25
Dołączył: 28.09.2008
Skąd: Lublin

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


Witam
jak w temacie
sam nie wiem jak do końca to rozwiązać więc czekam na za i przeciw.
Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 381
Pomógł: 1116
Dołączył: 30.08.2006

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


Tak czytam i aż mnie dziw bierze jak bardzo ludzie nie rozumieją o co chodzi w sesjach. Sesje to nasz pośrednik pomiędzy klientem i serwerem w bezstanowym protokole HTTP. Aby móc powiązać te dane potrzebujemy:
- utworzyć identyfikator sesji (SID czy jakkolwiek go sobie nazwiemy)
- gromadzić dane sesji

Sesje implementujemy po stronie klienta za pomocą:
- doklejania parametru sesji (SID) do adresu (jeżeli nie ma obsługi np cookies)
- za pomocą cookies
- można się ewentualnie pokusić o local storage (choć nie wiem czy ktoś tak aktualnie robi, są rozwiązania w JS wykorzystujące różne handlery w zależności od technologii którą klient wspiera) tyle że też nowoczesne przeglądarki ze wsparciem ogółu technologii zwanych HTML5 otwierają ogromne pole do popisu dla włamów
Po stronie klienta możemy trzymać albo sam SID, albo jakieś dodatkowe, tymczasowe dane ale nic ważnego (ciastko można skasować, można je zmienić, wirus może próbować je odczytać albo zmienić).

Oraz po stronie klienta za pomocą dowolnego mechanizmu przechowywania. Może to być:
- relacyjna baza danych
- nierelacyjna baza danych
- pliki tekstowe
przy czym rozwiązania te są zupełnie niezależne od naszej implementacji sesji a zależą od dostępności technologii i wymagań projektu. Jak ktoś wcześniej zauważył można nawet podmontować obszar pamięci jako katalog i obsługa operacji na danych jest zrzucona na system operacyjny (kernel, który we wszystkich rozwiązaniach i tak pośredniczy, to tak off-topicowo).
Tutaj, z racji tego że klient dostępu do tych danych nie ma, przechowujemy dane ważne. Tyle że rozwiązania te muszą być zabezpieczone przed typowymi próbami nieupoważnionego dostępu jak choćby SQL Injection czy inne wymienione w wątku.

W obu przypadkach od nas zależy co przechowujemy w tych implementacjach ponieważ każde z nich ma jakieś ograniczenia. Cookie do 4kB, relacyjne bazy danych mogą być wolne (ale nie przesadzajmy, przy ilości zapytań potrzebnych do obsługi całego sklepu to pryszcz dla silnika), trzymanie w pamięci może sprawić że dane stracimy.

Sam mechanizm sesji to całkowicie nasza inicjatywa bo akurat w tym przypadku można skorzystać z gotowych, dostępnych w PHP metod ale też napisać klasę która nic z SessionHandler czy interface nie implementuje. Chodzi tylko o to żeby powiązać SID klienta z SID serwera. Co więcej, można nawet napisać taki mechanizm, który dla danych mniej istotnych tworzy namespace pracujący w backendzie na noSQL a dla danych istotnych dla baz relacyjnych.
Go to the top of the page
+Quote Post

Posty w temacie
- usb2.0   Koszyk w sesji czy w bazie?   5.05.2012, 19:17:43
- - patrysiek2   Według mnie lepiej w sesji.   5.05.2012, 19:32:44
- - marcio   Cytat(patrysiek2 @ 5.05.2012, 20:32:4...   5.05.2012, 20:01:54
- - greycoffey   To jest dana, które pasuje TYLKO do sesji - a czy ...   5.05.2012, 20:23:28
|- - r4xz   Cytat(greycoffey @ 5.05.2012, 21:23:2...   5.05.2012, 21:17:54
- - Niktoś   Ja zrobiłem koszyk oparty o nierelacyjną bazę dany...   5.05.2012, 21:25:55
- - Fifi209   Jak najbardziej coś w stylu pomysłu Niktosia. Dlac...   5.05.2012, 22:57:08
- - usb2.0   nie wiem czy się zbijasz @up czy mówisz poważnie a...   5.05.2012, 23:03:59
|- - Fifi209   Cytat(usb2.0 @ 6.05.2012, 00:03:59 ) ...   5.05.2012, 23:06:14
- - bastard13   Zależy, czy po wyłączeniu przeglądarki i uruchomie...   5.05.2012, 23:12:18
- - usb2.0   no brzmi całkiem sensownie sory ze zwiątpiłem no p...   5.05.2012, 23:13:05
- - Niktoś   Może generalizuje ,ale: sesja= session hijacking,...   6.05.2012, 00:06:38
- - Fifi209   Cytat(usb2.0 @ 6.05.2012, 00:13:05 ) ...   6.05.2012, 04:56:15
- - spokoloko123   Bardzo wygodnie wszystko jest rozwiązane na helion...   6.05.2012, 05:44:26
- - Niktoś   Dane koszyka to raczej dane temporalne-użytkownik ...   6.05.2012, 09:16:17
- - usb2.0   skorzystałem z rady @Fifi209 i oparłem to na seria...   6.05.2012, 09:29:10
- - Niktoś   Nom w darmowym ,czy nawet płatnym hostingu tego ni...   6.05.2012, 09:31:44
- - greycoffey   Cytat(Niktoś @ 6.05.2012, 01:06:38 ) ...   6.05.2012, 10:02:11
- - usb2.0   brzmi sensownie   6.05.2012, 10:05:10
- - greycoffey   Btw. PHP oferuje nawet podstawowe API do tworzenia...   6.05.2012, 10:13:42
- - Niktoś   CytatNiktosiu, w takim razie w jaki sposób impleme...   6.05.2012, 10:19:19
|- - greycoffey   Cytat(Niktoś @ 6.05.2012, 11:19:19 ) ...   6.05.2012, 10:37:13
- - Niktoś   CytatPrawde mówiąc: gówno wiesz na temat tych atak...   6.05.2012, 11:46:49
|- - greycoffey   Cytat(Niktoś @ 6.05.2012, 12:46:49 ) ...   6.05.2012, 12:09:56
- - tehaha   Cytatnierelacyjne bazy danych w cache komputera do...   6.05.2012, 12:17:54
- - wNogachSpisz   Pytanie dobre, ale obawiam się że autor w zależnoś...   6.05.2012, 12:41:01
- - greycoffey   Generalnie najlepiej zaimplementować to w PHP 5.4 ...   6.05.2012, 12:45:03
- - Niktoś   CytatW jakim cache komputera? Mógłbyś to rozwinąć?...   6.05.2012, 15:29:44
- - tehaha   CytatTak,relacyjne(MySql, MSSQL ,inne) jak i nie r...   6.05.2012, 16:47:56
- - Niktoś   CytatNie to nie są sesje, sesja to mechanizm pozwa...   6.05.2012, 17:45:41
|- - r4xz   Cytat(Niktoś @ 6.05.2012, 18:45:41 ) ...   6.05.2012, 18:33:52
- - tehaha   CytatRównie dobrze mógłbym w MSSQL ,czy w MYSQL ut...   6.05.2012, 18:38:07
- - greycoffey   Cytat(r4xz @ 6.05.2012, 19:33:52 ) w ...   6.05.2012, 18:42:50
- - Niktoś   CytatNo właśnie nie mógłbyś byś. Bo jak wtedy zide...   6.05.2012, 20:14:41
|- - greycoffey   Cytat(Niktoś @ 6.05.2012, 21:14:41 ) ...   6.05.2012, 21:12:06
- - tehaha   CytatMógłbym dla każdego użytkownika utworzyć unik...   6.05.2012, 20:44:08
- - aachi   Przepraszam, że się wtrącam w waszą dyskusję, ale ...   6.05.2012, 21:24:41
- - Niktoś   A niech to odpalę troszeczkę kodu ,mam nadzieję ,ż...   6.05.2012, 22:00:34
- - Fifi209   Niktoś robisz straszny burdel w kodzie. Czemu dane...   6.05.2012, 22:31:19
- - tehaha   To co pokazałeś to jest sesja oparta o bazę. Cytat...   6.05.2012, 22:33:45
- - mortus   @Niktoś: SQLSpaces nie jest nierelacyjną bazą dany...   6.05.2012, 23:29:20
- - Niktoś   CytatSidejacking is still a problem for many sites...   6.05.2012, 23:46:02
|- - mortus   Cytat(Niktoś @ 7.05.2012, 00:46:02 ) ...   7.05.2012, 08:14:19
- - tehaha   CytatAle żeś mi armatę wystawił, chyba najgorszy a...   7.05.2012, 01:26:17
- - spokoloko123   Zrobienie tego w sesji jest po prostu głupie. Nikt...   7.05.2012, 06:01:31
- - m44   spokoloko123 w jaki sposób chcesz to zrobić, jeśli...   7.05.2012, 08:07:18
|- - spokoloko123   Cytat(m44 @ 7.05.2012, 09:07:18 ) spo...   7.05.2012, 08:21:23
|- - mortus   Cytat(spokoloko123 @ 7.05.2012, 09:21...   7.05.2012, 08:53:19
- - Niktoś   Cytat- zapisanie zawartości koszyka w bazie danych...   7.05.2012, 09:28:52
|- - mortus   Cytat(Niktoś @ 7.05.2012, 10:28:52 ) ...   7.05.2012, 09:36:09
- - spokoloko123   @mortus Nie rozumiesz zasad e-commerce. Nie będę t...   7.05.2012, 18:57:43
|- - mortus   Cytat(spokoloko123 @ 7.05.2012, 19:57...   7.05.2012, 19:17:18
- - tehaha   @spokoloko123 pomysł bardzo fajny, ale i tak ten k...   7.05.2012, 19:29:33
- - Niktoś   Taka analiza ma tylko i wyłącznie sens w przypadku...   7.05.2012, 19:34:58
|- - mortus   Cytat(Niktoś @ 7.05.2012, 20:34:58 ) ...   7.05.2012, 19:43:39
- - Niktoś   No ale jeśli użytkownik nie będzie zarejestrowany,...   7.05.2012, 19:57:06
|- - mortus   Cytat(Niktoś @ 7.05.2012, 20:57:06 ) ...   7.05.2012, 20:05:15
|- - uupah5   Cytat(Niktoś)No ale jeśli użytkownik nie będzie za...   8.05.2012, 07:43:47
- - tehaha   @Niktoś identyfikacji użytkownika pomiędzy żądania...   7.05.2012, 20:07:16
- - viking   Tak czytam i aż mnie dziw bierze jak bardzo ludzie...   8.05.2012, 06:16:33


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 22:59