![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 10.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Możecie mi opisać jak wy rozwiązujecie problem klasy z danymi wejściowymi? Ja mam wątpliwości jak trzymać dane, jak ustalać do nich dostęp, czy dzielić je na get, post, session przy wyciągniu z klasy itp.
Ktoś może podzielić się swoim doświadczeniem? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 28.09.2003 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Ja w klasie Http mam metody get, post, cookie, file, ktore zwracaja dane wejsciowe (przy inicjalizacji obiektu robie filtrowanie itp). Dla sesji mam osobna klase (patrz art na php.pl
![]() |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 10.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
A jak wygląda zapisywanie danych do sesji? Posługujesz się zwykłą tablicą $_SESSION[$var] czy masz jakąś metodę np. saveVar($var) ?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 28.09.2003 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Mozna i tak i tak, bo podmieniam session handlera, ale wole Session::set( 'name', value' ), bo gdy nie ma zmiennej sesyjnej to nie ma tez indeksu dla tablicy $_SESSION i wywala brzydki blad, a tak to ladnie sobie moge to obsluzyc w funkcji
![]() |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 0 Dołączył: 10.12.2004 Ostrzeżenie: (0%) ![]() ![]() |
Do klasy input wcisnąłem jeszcze
Co o tym myślisz? Mógłbym to napisać od ręki, ale stwierdziłem, że przemyśle Session Handlera i klase Input by potem nie wprowadzać w całym skrypcie zmian. Ten post edytował tuner 16.05.2005, 16:05:34 |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 135 Pomógł: 0 Dołączył: 28.09.2003 Skąd: Rzeszów Ostrzeżenie: (0%) ![]() ![]() |
Hehe, Twoje $this->vars, to nic innego jak $_REQUEST
![]() ![]() pozdro |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
Ja bym tak nieśmiało zaczął od tego, w jakim celu w ogóle jest to robione... nie żebym uważał, że żadna nadbudowa nad $_GET itd jest niepotrzebna. Wręcz przeciwnie. Ale najpierw trzeba określić, co się chce dzięki temu uzyskać, a potem to zaimplementować. Bo rozwiązań może być tyle, co developerów. A większość z nich, jak to zwykle bywa, będzie bez sensu, bo większość developerów nie zastanowi się nawet, czemu to ma służyć, tylko zrobi na hurra
![]() |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 222 Pomógł: 0 Dołączył: 3.04.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Cytat(hawk @ 2005-05-16 18:57:33) najpierw trzeba określić, co się chce dzięki temu uzyskać No właśnie. To co się chce przez to uzyskać? I co się da przez to uzyskać? -------------------- pozdrawiam, chfast
|
|
|
![]() ![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 1 Dołączył: 24.04.2004 Ostrzeżenie: (0%) ![]() ![]() |
Cytat(chfast @ 2005-05-17 11:04:20) Cytat(hawk @ 2005-05-16 18:57:33) najpierw trzeba określić, co się chce dzięki temu uzyskać No właśnie. To co się chce przez to uzyskać? I co się da przez to uzyskać? Np. możemy się pozbyć problemu z niezainicjowanymi zmiennymi, np.
Okazuje się, że nie ma w sesji takiej zmiennej i pojawia się błąd: Kod Notice: Undefined index: foo in ... on line ... Jeśli zrobimy to w ten sposób:
To możemy wszystko ładnie załatwić w metodzie get():
To tylko prosty przykład, pokazujący również kolejną zaletę tego rozwiązania, a mianowicie możliwość wprowadzenia łatwego filtrowania danych. To tylko początek: możliwości jest o wiele więcej. |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 521 Pomógł: 0 Dołączył: 3.11.2003 Skąd: 3city Ostrzeżenie: (0%) ![]() ![]() |
@BugTomek: akurat twój przykład jest zły, bo zamienia jeden problem na drugi. Owszem, nie mam problemu z niezainicjowanymi zmiennymi, ale mam problem ze zmiennymi, które przyjęły wartość NULL, a ja o tym nie wiem. I tak trzeba sprawdzić wartość zmiennej w kodzie, żeby upewnić się, że ona w ogóle przyszła. Czyli: to co napisałeś nie daje żadnej korzyści.
Natomiast stripslashes to już dobre zastosowanie. Chociaż w złym miejscu. Nie powinno się znajdować w momencie, kiedy ktoś chce pobrać wartość z $_SESSION, ale powinno od razu wstawiać do $_SESSION poprawioną wartość. Inaczej nie tylko wywołujemy bez sensu stripslashes wielokrotnie, ale do tego ryzykujemy, że ktoś odwoła się bezpośrednio do $_SESSION i wszystko zmarnuje. |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 1 Dołączył: 24.04.2004 Ostrzeżenie: (0%) ![]() ![]() |
Co do pierwszego to zgadzam się w zupełności. Są co prawda przypadki, kiedy takie coś wystarcza, ale generalnie nie jest to idealne rozwiązanie - jak wobec tego zrobić to lepiej?
Co do drugiego, to faktycznie, do ideału temu rozwiązaniu wiele brakuje, ale chodziło jedynie o generalną zasadę co można z tym robić. Filtrowanie należałoby zrobić bardziej rozbudowane, przy wyciąganiu to w zasadzie bardziej logiczne byłoby addslashes (jeżeli dane z sesji umieszczamy w zapytaniach SQL), ale to również jedynie jako opcja. Możliwości jest tu mnóstwo, ale wiadomo, że chodzi o to, żeby te dane łatwo walidować. |
|
|
![]()
Post
#12
|
|
![]() Grupa: Moderatorzy Postów: 1 566 Pomógł: 37 Dołączył: 14.05.2003 Skąd: Kraków ![]() |
Ja mam zawsze byłem odmieńcem i poprzez input pobieram: ip, host, browser użytkownika, pobieranie danych z adresów, $_POST.
Ten post edytował Ociu 18.05.2005, 12:56:46 |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 362 Pomógł: 0 Dołączył: 18.02.2004 Skąd: Knurów Ostrzeżenie: (0%) ![]() ![]() |
Ja osobiście wykorzystuje taką klasę nie tylko do filtrowania (strip_slashes, itp.), ale raczej do rzutowania typów, czyli implementuje sobie metody getInt, getString, itp.
|
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 11.06.2005 Ostrzeżenie: (10%) ![]() ![]() |
A ja robię tak:
A potem uzywam np. tak:
Dodam jeszcze, że używam tego tylko do GET, POST i ciastek, bo niby jak user ma sie dobrać do sesji. Ten post edytował NuLL 1.07.2005, 16:25:35 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.08.2025 - 22:46 |