Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [klasa]Obsluga sesji
Forum PHP.pl > Forum > Gotowe rozwiązania > Algorytmy, klasy, funkcje
CTRL
Witam!

Chciałbym pokazać klasę do obsługi sesji. Wykorzystuje ona bazę mysql. na starcie skryptu wykonujemy Start(); i tworzymy tym nowe id sesji w bazie, oczywiście jeśli nie mamy żadnej sesji rozpoczętej. To id przechowywanie jest w ciasteczkach (sesid). W przykładzie wszystko jest pokazane, [link]. Przed start dajemy oczywiście łączenie z bazą. Dalej możemy robić co nam się podoba, pobierać wartości, zmieniać itp

Na chwilę obecna mamy:
Startowanie sesji
Usuwanie sesji
Pokazywanie wartości (po kluczu)
Pokazywanie wszystkich wartości dla danej sesji
Ustalanie wartości

Chciałbym zapytać czy:
Klasa powinna mieć w sobie zabezpieczenia typu przeciw sql injection itp, czy to używający powinien o to zadbać?
Czy lepsze jest: $sm->set($key,$value); czy $sm->set_value="php.pl" itp. ?

Chciałbym prosić o komentarz, wytknięcie mi wszystkich błędów i poradę co jeszcze można tutaj dodać, bo na pewno jest jeszcze wiele możliwości, z tym że ja nie mam pomysłów smile.gif

Pozdrawiam Marcin Wieczorek
!*!
1. nie użyaj VAR przed nazwą zmiennej
2. ustal jakiego typu są te funkcje i zmienne public, private, protected
3. użyj PDO zamiast mysql_*
4. metoda MysqlConnect() jest zbędna, powienien to robić konstruktor o ile nie korzystasz z jakiś wzorców a sama klasa jest użyta do b. prostych stron.
5. po co Ci metody install w klasie do sesji?
6. postaraj się dokumentować kod PHP z przyjętymi "standardami", pomimo że coś napisałeś jako komentarz, niewiele mówi i czy to nie powinno być w dziale oceny?

Co w przypadku gdy nie mam włączonej obsługi ciastek?
CTRL
1. Nie deklarować zmiennej wcale?
2. Ogarnąłem ten temat i tak zrobiłem.
3. Trochę zajmie przerobienie tego wszystkiego, ale już czytam. Uzasadnij dlaczego ta biblioteka jest najlepsza wg. Ciebie
4. Hę? Mógłbyś wyjaśnić co masz na myśli? Mam łączyć się z bazą z automatu, bez funkcji?
5. Ta funkcja dodaje tabele do bazy danych, w przyszłości będzie może operowała na większą skalę, więc czemu nie?
6. Zdecydowałem że najpierw klasa a potem jak skończę to zrobię wszystko wyjaśniające komentarze. Dlaczego nie oceny? To jest klasa a nie jakaś strona, z Waszą pomocą może uda mi się zrobić coś większego i przydatnego dla innych
7. Dobry pomysł, co wtedy jak mam wyłączone ciastka?
!*!
1. nie musisz deklarować zmienne z "var" na początku, wysatrczy "public $zmienna"
3. mysql_* wyleci z PHP za jakiś czas i zostanie samo PDO
4. do łączenia z bazą powinna być użyta osobna klasa
5. jak wyżej
7. komunikat, return false? cokolwiek, albo osobna metoda dzięki której będę mógł to sprawdzić i dopiero wtedy uruchomić obsługę sesji.
CTRL
1. zamiast var dać public? Już się robi.
3. Zagmatwane to jest strasznie, polecicie jakiś tutorial? raz query, raz exec, raz prepare. wszystko chyba daje to samo, nie wiem nie znam się.
4. Do łączenia czyli po prostu wdrożyć PDO? Jakoś nie widzę sensu, to tylko łączenie
5. To samo, osobna klasa tylko po to aby dodać tabelki? Uzasadnij to wink.gif
7. Myślałem że chodziło Ci o funkcjonowanie bez ciastek, a teraz widzę że mówisz o przerywaniu pracy w takim wypadku. Zaraz coś poradzę.
!*!
1. To zależy czy Twoja zmienna ma być "public" wink.gif
3. Tak, http://www.php.net/manual/en/book.pdo.php i google < nie piszę tego złośliwie, są już setki artów na ten temat po prostu. Jak się chcesz pozbyć SQL Injection to poszukaj pod "PDO i bindowanie", chodzi w tym o to że pierw ustalasz co jest czym, a PDO już samo to sobie wklei do zapytania.
4. Jeśli używasz tego w prostej stronie, to może być tak jak jest. Chodzi o to że jak zmienię coś w połączeniu z bazą, to po co mam zmieniać klasę od sesji, na tym polega min, pisanie obiektowe.
5. Ta metoda jest zbędna, bo 1. nie wykorzystuję jej ciągle, a 2. samym mechanizmem instalajci w bazie, zajmuje się instalator aplikacji, więc po co mi w klasie coś, co powinno już dawno być zrobione.
7. Chodzi mi o opcję bez ciastek. Widzisz...to zależy jak budujesz całość, ja to widzę globalne... Chociaż może faktycznie, zostaw to jak jest... Tylko co wyrzuci Twoja klasa jak nie będzie ciastek włączonych?
greycoffey
Straszny interfejs klasy.
  1. $session->set('nazwa', 'wartosc');
  2. // jest chyba latwiejsze niz:
  3. $session->set_key = 'nazwa';
  4. $session->set_value = 'wartosc';
  5. $session->set();

I to samo odnosi się do innych metod. Nie wiem, czemu nie używasz argumentów metod, tylko dziwnych zmiennych.
CTRL
Czyli zmienia to tylko wygląd a nie działanie klasy? Już jakiś czas temu zdecydowałem się to zmienić ale chciałem się zapytać co Wy o tym sądzicie. Chciałbym się upewnić co jest grane z tymi ciastkami, bo ustalanie jest przez nagłówki, ale czy pobieranie też? Czy ustalanie ciastka po czym sprawdzanie czy ono jest to dobra metoda na wyłapywanie wyłączonej obsługi cookies?
!*!
Cytat(CTRL @ 12.05.2012, 16:28:26 ) *
Czyli zmienia to tylko wygląd a nie działanie klasy?

Czyli że o co Ci chodzi?

Cytat(CTRL @ 12.05.2012, 16:28:26 ) *
Już jakiś czas temu zdecydowałem się to zmienić ale chciałem się zapytać co Wy o tym sądzicie.

Jak Ci pasują metody magiczne, to korzystaj.

Cytat(CTRL @ 12.05.2012, 16:28:26 ) *
Chciałbym się upewnić co jest grane z tymi ciastkami, bo ustalanie jest przez nagłówki, ale czy pobieranie też? Czy ustalanie ciastka po czym sprawdzanie czy ono jest to dobra metoda na wyłapywanie wyłączonej obsługi cookies?


Ciastka pobierasz z tablicy $_COOKIE, nie ma innej metody jak próba utworzenia ciastka i sprawdzenie czy się udało.
memory
!*! Słuszna uwaga z ciastkami trzeba będzie poprawić kod smile.gif. Forum też bez ciastek nie działa smile.gif
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-2024 Invision Power Services, Inc.