2009-12-11 12 views
7

Właśnie skończyłem zdawać egzamin końcowy z aplikacji internetowych. Ograniczenie tego, co było raczej łatwym (aczkolwiek długotrwałym - 12 stron) egzaminem, było pytaniem nas o zakodowanie implementacji sesji, podobnej do tej wykonanej przez javax.http.HttpSession.W jaki sposób zaimplementowano HttpSession?

Nienawidzę się przyznać, to mnie zaskoczyło. Zrobiłem raczej implementację BS używając HashMap i zrobiłem trochę szaleństwa z losowym mapowaniem plików cookie na serializowaną HashMap na serwerze, ale jestem prawie pewien, że to jest fałszywe ... i teraz mam ochotę wiedzieć, jak to jest naprawdę Gotowe.

Szczególnie dla kogoś, kto intensywnie korzystał z PHP, ale z jakiegokolwiek powodu nigdy nie zadał sobie trudu, by nauczyć się magii związanej z wygodą, bardzo chciałbym dowiedzieć się więcej o podstawowych implementacjach sesji. J2EE i PHP na pewno, ale inne języki/frameworki też są świetne. Dzięki!

Odpowiedz

8

Z mojego zrozumienia - jesteś blisko.

Z mojego rozumienia, plik cookie z zasadniczo MD5 "ID" jest zapisany po stronie klienta i dostarczony przez cookie lub zmodyfikowany GET.

Po stronie serwera dane "sesji" z dopasowanym identyfikatorem sesji zapisywane są w pliku tymczasowym (w Linuksie domyślnie jest to/tmp). Katalog sesji, który moim zdaniem można ustawić w pliku PHP.ini.

+1

+1, bardzo krótkie podsumowanie. W PHP można również bardzo łatwo zaimplementować własne procedury obsługi sesji, na wypadek gdybyś chciał użyć bazy danych lub innego źródła danych sesji. Zasadniczo sesja to po prostu unikalny zestaw danych z kilkoma metodami interakcji z nią (zapisywanie, aktualizowanie, usuwanie), a dane są powiązane z użytkownikiem za pomocą małego identyfikowalnego tokena, tj. plik cookie lub parametr GET. – zombat

+1

Warto chyba powiedzieć, że nazwy ciasteczek to odpowiednio JSESSIONID i PHPSESSIONID. Nie muszą też koniecznie być ciasteczkami. Mogą być częścią adresu URL, np. Jsessionid = lub; phpsessionid = . –

+0

Dobrym sposobem zrozumienia strony HTTP sesji jest coś takiego jak nagłówki HTTP: https://addons.mozilla.org/en-US/firefox/addon/3829 –

1

Ponieważ jest to interfejs, możesz spojrzeć na klasy (-a) implementujące je w pojemniku internetowym typu open source, takim jak Tomcat, i przekonaj się sam.

Powiązane problemy