Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Klasa do obsługi Sesji via MySQL ?
Forum PHP.pl > Forum > PHP
seba22
Witam,

Czy dysponuje ktoś jakąś dokumentacją na temat Sesji w PHP poprzez serwer baz danych MySQL ?


Opisane w sieci rozwiązania zatrzymały się w 2006 roku, i nic nowszego nie mogę znaleźć a myślę że przez 4 lata mógł nastąpić postęp.

Jakiś PDF ?
Gotowa klasa ?


pozdrawiam
vokiel
Możesz podejrzeć źródła popularnych frameworków, przykładowo kohana ma możliwość obsługi sesji na bazie
marcio
http://media.zyxist.com/artykuly/wlasny_mechanizm_sesji.pdf

http://artykuly.zyxist.com/czytaj.php/wlasny_mechanizm_sesji

I napewno znajdzie sie kilka innych takze nowych.

P.S tu masz male api do tego jak by to zrobil beldzio: http://www.beldzio.com/bezpieczenstwo-mechanizmu-sesji
seba22
Dziękuję za linki, postaram się je przeczytać i zrozumieć, bo teraz rzuciłem tylko okiem na funkcje.

Wszystko jednak skupia się w kierunku programowania obiektowego i zagadnień typu $wartosc->$ustaw->$zalogowany->$true
A odczyt danych skupia się w następujący sposób
$wartosc>$pokaz->$zalogowany


Myślałem bardziej o metodzie która przechwyciła by bieżący system sesji, tak więc aby zapytania kierowane w
$_SESSION['imie']=ala;
Szły do serwera MySQL.

Może punkt zahaczenia do tej metody leży w session_set_save_handler().


Metody opisane w PDF-ach tak naprawdę nic nie wnoszą w temacie sesji... dla mnie opisane tam informacje to nie sesje.
To zwykły SELECT FROM database WHERE ID_SESJI = $_COOKIES['nazwa_sesji_uprzednio_zakodowana_sha1_z_random_string_plus_godzina']

Ma to po prostu mało wspólnego z sesją jako sesją, sesja ma to do siebie że wykonując operacji na tablicy dostaje operację niejako automatycznie zacommitowaną w serwer, a nie pociągam manualnie za funkcję poprzez "zapisz ze wartosc x jest rowna jeden a nie dwa dla sesji xyz".


Nie twierdzę że opisana wyżej metoda jest zła, ale taką jestem stworzyć samemu po wypiciu 2 piw, dodając do tego zabezpieczenie przez kradzieżą w postaci porównania adresów ip, przeglądarki itp. itd.

Sens jest aby bez przepisywania źródła w postaci całego projektu osiągnąć migrację przez frustrację.


Nie jestem pewien czy ten opis nie jest zgodny z podanym wyżej schematem:

http://www.devshed.com/c/a/PHP/Storing-PHP...n-a-Database/6/

(nie jestem w stanie teraz przetestować, zrobię tylko jak będę miał chwilkę wolnego - wyganiają mnie)
Ale już to wygląda tak jak by przejmowało komendy stricte należące do PHP.

Jak uruchomię to wypowiem się jak radzi sobie z klastrowaniem....


pozdrawiam
vokiel
Ale wykład;)

Tak, aby móc normalnie korzystać z $_SESSION należy ustawić handler dla sesji. Obojętne jak on będzie skonstruowany (czy standardowy, czy na plikach, bazie, czy jakkolwiek inaczej).

Jeśli masz domyślną sesję, to też musisz pobrać dane, tyle, że robi to wbudowany mechanizm, który przechowuje sesje w plikach w folderze tymczasowym.

Jeśli ustawisz handler sesji, to nie będziesz musiał nic zmieniać w projekcie. Dalej będziesz mógł korzystać z przypisań $_SESSION.
Zyx
Cytat
Metody opisane w PDF-ach tak naprawdę nic nie wnoszą w temacie sesji... dla mnie opisane tam informacje to nie sesje.
To zwykły SELECT FROM database WHERE ID_SESJI = $_COOKIES['nazwa_sesji_uprzednio_zakodowana_sha1_z_random_string_plus_godzina']

Ma to po prostu mało wspólnego z sesją jako sesją, sesja ma to do siebie że wykonując operacji na tablicy dostaje operację niejako automatycznie zacommitowaną w serwer, a nie pociągam manualnie za funkcję poprzez "zapisz ze wartosc x jest rowna jeden a nie dwa dla sesji xyz".


A myślisz, że jak niby działają standardowe sesje PHP? Dokładnie tak samo, jak opisane jest w artykułach, tylko zamiast bazy są pliki i API jest na funkcjach. I dokładnie tak samo będą one działać, jak sobie napiszesz własny handler sesji. Sorry, ale gdyby każda głupia zmiana była od razu zapamiętywana, to życzę powodzenia w kupowaniu dodatkowych serwerów.

Sesja to stan przenoszony między żądaniami HTTP, a nie jakieś filozoficzne wywody, które snujesz smile.gif.
seba22
Ależ oczywiście moi drodzy, doskonale wiem jak działają sesje.
Gdzie są zapisywane, jakie milutkie pliki odpowiadają za nie, i czym są rozdzielane wartości winksmiley.jpg.

Po prostu czasem trzeba spróbować nieco niecodziennych rozwiązań, uważam że ustawienie header będzie ciekawsze niż pisanie własnego API żeby obsłużyć API winksmiley.jpg

To takie robienie dwa razy.

Raz zrobili Panowie, działa fajnie ale lokalnie.

Przy klastrowaniu zaczyna się ciekawostka bo zachodzi potrzeba by load balancer (mod proxy winksmiley.jpg ) kierował zapytania do tego samego noda w którym jest zapisana sesja. Ta sama zabawa przy klastrowaniu przez DNS www1.domena.pl.

A to z kolegi wpływa na HA naszego load balancera.


Header i mysql powinien rozwiązać ten problem dzięki któremu dowolny nod będzie w stanie obsługiwać dane tak jak by miał dostęp do nich lokalnie.

Powiem więcej, nie koniecznie musi to być serwer stricte www, może być też z serii img.domena.pl, dzięki temu łatwo będzie dać dostęp do zdjęć tylko zalogowanym użytkownikom.



Absolutnie nie neguję idei opisanej w PDFach, jest słuszna i przemiła ale w moim wypadku zastosuję inne rozwiązanie.

Niech nikt nie czuje się że jego praca poszła na marne ponieważ wymiany informacji i konsultacji nigdy zbyt wiele ale czasem następuje ten moment gdy trzeba przejść od słów do przysłowiowych czynów.

Z resztą wszyscy powinniśmy wiedzieć iż programowanie to pasja i tak jak malarstwo wymaga które wymaga zastosowania odpowiednich barw kolorów tak i php wymaga wybrania odpowiednich klas i procedur by stworzyć sztukę.



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.