Cytat
apropos sesji to tu jest narazie beta test;) mojego artykulu
Przeczytałem i muszę powiedzieć, że mam mieszane uczucia. Z jednej strony faktem jest, że artykuł o tej tematyce zainteresuje osoby początkujące i średniozaawansowane - i sądząc po treści, dla takich został napisany. Jest wprowadzenie i wszystkie podstawowe informacje. Z drugiej strony, osoby bardziej zaawansowane często odkrywają w sesjach sporo nieznanych im elementów. Uważam, że skoro powstaje taki artykuł to rozdziały bardziej zaawansowane też powinny się w nim znaleźć. Za chwilę napiszę dokładniej o co mi chodzi, a na razie parę uwag do tekstu (jeśli można ofkoz :wink: ).
Czytając odnoszę wrażenie, że autor zakłada, że php u użytkownika ma standardowe ustawienia. To w sumie słuszne założenie, ale nie jest zrealizowane konsekwentnie. W rozdziale "jak to działa?" czytamy: "Zmienne i ich wartości zostają zapisane do specjalnych plików po stronie serwera." To prawda, ale tylko przy ustawieniach domyślnych. Dane sesji możemy przecież trzymać gdzie nam się podoba - w bazie danych albo na ftpie w archipelagu trynidad tobago. Kwesta zdefiniowania funkcji wejścia-wyjścia. W "Bezpieczeństwo" czytamy: "Istnieje jednak jak juz wyżej wspomniałem możliwość "oszukania" skryptu gdy wykorzystujemy funkcje session_register() do tworzenia zmiennych sesyjnych. Jako, że funkcja tworzy zmienną super globalną istnieje możliwość przekazania odpowiedniej zmniennej w URLu przez co wartośći zostaną przekłamane i umożliwią np. dostęp do strzeżonej hasłem strony." To oczywiście też prawda (no może z wyjątkiem określenia "super globalną" - raczej "globalną", superglobalne to są tablice takie jak $_POST), ale akurat nie przy ustawieniach domyślnych. Domyślnie zmienne rozpakowywane są w następującej kolejności: EGPCS (Enviroment, Get, Post, Cookie, Session) - kolejne tablice nadpisują zmienne z poprzednich. Skoro tak jest to nie da się nadpisać zmiennej sesyjnej wklepując coś w adresie, ani nawet tworząc fikcyjnego post-a. Dodam, że nie widzę powodu zmiany tych ustawień i prawie u wszystkich wyglądają one w ten sposób. Nie chce przez to powiedzieć, że należy używać register_globals - sam jestem ich przeciwnikiem, ale skoro już powstaje artykuł to niech będzie precyzyjny. W "co potrzebuję, żeby używać sesji?": "Aby sesja poprawnie działała należy w pliku konfiguracyjnym php ustawić session.save_path". Skoro mówimy o ustawieniach domyślnych to ścieżka już tam jest. Oczywiście warto ją zmienić, ale to już temat do rozdziału "bezpieczeństwo". Nie wiem dlaczego transparentne przekazywanie identyfikatora jest w artykule prawie nieopisane. Dla początkującego jest to przecież bardzo wygodny mechanizm. Cookie zawsze można wyłączyć, a autodopisywanie SIDa do adresu jest na początek ok. We "wskazówki" czytamy: "W sesji nie należy przechowywać dużej ilości danych". Hmm... A dlaczego nie? Przecież to takie samo źródło danych jak każde inne. Utarło się, że przechowujemy tam tylko identyfikatory itp. ale równie dobrze mogłoby być tam co innego. Fakt, że jeśli sesja chodzi na plikach to jest mało wydajna, ale jeśli chodzi na bazie danych to już na prawdę nie widzę przeszkód...

Mam nadzieję, że autor nie ma mi za złe tych uwag - generalnie artykuł mi się podoba

Co powinno się jeszcze w nim znaleźć? Moim zdaniem kolejny rozdział o kwestiach trudniejszych. Przede wszystkim opis jak napisać uchwyty dla sesji przechowywanych w bazie danych (źródło: "PHP4 Aplikacje", albo zagraniczne artykuły w sieci), informacje o ukrywaniu identyfikatora sesji w mniej typowych miejscach - w ścieżce dostępu (ustawienia Apache'a i odpowiedni skrypt) oraz w nazwie domeny (ustawienia DNS'a oraz odpowiedni skrypt). Parę słów o przekazywaniu kluczowych zmiennych, takich jak identyfikatory rekordów bazy danych, między stronami (zagadnienie blisko spokrewnione) czyli np. jak zaszyfrować zmienną przed wysyłką (np. przez MD5), a potem przy wyciąganiu z bazy danych użyć MD5 wbudowanego w silnik bazy do znalezienia odpowiedniego rekordu. Dobrze byłoby wspomnieć o trudnościach czyli np. o tym, że tylko tablica $_SESSION jest superglobalna i można się do niej odwoływać wewnątrz funkcji. Inne metody wymagają globalizacji albo przekazywania w parametrach. Poza tym o problemach wynikających z nieusuwania ciacha u klienta (otwarcie sesji w osobnym oknie przy używaniu cookie rodzi szczególnie dużo problemów). Warto żeby ludzie wiedzieli czego unikać. No i może kilka słów o gc_probability. Można też opisać krótko kompletne rozwiązania takie jak phpLib, albo chociaż zrobić do takich opisów linki.
Jeśli będę mógł w czymś pomóc to jestem do dyspozycji. 8)
BTW, przydałaby się możliwość publikacji plików na tym forum. Chociaż takich po parę kilo - żeby nie wrzucać skryptów w treść.