Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Obsługa Formularzy w MVC
Luke_Star
post 12.11.2006, 13:52:08
Post #1





Grupa: Zarejestrowani
Postów: 129
Pomógł: 2
Dołączył: 17.01.2005

Ostrzeżenie: (0%)
-----


Pisze dosc spory kod i zastanawiam sie jaka według was jest najlepsza, najszybsza a co najwazniejsze najbezpieczniejsza forma przetwarzania danych z formularzy. Zarówno ze strony kodu php jak i walidacji. Rozumiem ze jest to temat szeroki jednak nie daje mi juz zasnac od 3 dni, prosiłbym więc o dobre rady od ludzi z o wiele wiekszym doświadczeniem.

Ten post edytował Luke_Star 12.11.2006, 14:20:56


--------------------
Słowa, słowa, słowa... - Hamlet || Funkcje, funkcje, funkcje... - Luke Star
--------------------------------------
Portal Literacki: ( |||------- ) 30%
Go to the top of the page
+Quote Post
envp
post 12.11.2006, 15:13:05
Post #2





Grupa: Zarejestrowani
Postów: 359
Pomógł: 1
Dołączył: 16.04.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Cytat
Zarówno ze strony kodu php jak i walidacji


Rozumie, że walidację chcesz przeprowadzić w js, skoro nie uwzględniasz jej w php?

Moja rada - walidacja w js wstępna, w php ostateczna i dogłębna.

a najlepiej zacząć od

  1. <?php
  2. if(submit){}
  3. ?>


Walidować, najlpeiej gotowym rozwiązaniem - nie wiem z Zend, lub Rapide. No i potem forwardować, jeśli ok na akcję która dodaje czy cośtam robi, lub forwardować na tą samą jeśli błąd + wyświetlenie co nie tak... To moje zdanie, ale może marne...

Ten post edytował envp 12.11.2006, 15:13:55
Go to the top of the page
+Quote Post
Luke_Star
post 12.11.2006, 20:26:16
Post #3





Grupa: Zarejestrowani
Postów: 129
Pomógł: 2
Dołączył: 17.01.2005

Ostrzeżenie: (0%)
-----


walidacja raczej i z jednej i zdrugiej strony, po co obciazac serwer jakims całkowicie niepoprawnym wpisem. Mam pytanko co do akcji formularzy, jak to działa w bardzo duzych skyptach? Chodzi mi dokładniej jak ustawione jest <form action="">.


--------------------
Słowa, słowa, słowa... - Hamlet || Funkcje, funkcje, funkcje... - Luke Star
--------------------------------------
Portal Literacki: ( |||------- ) 30%
Go to the top of the page
+Quote Post
My4tic
post 12.11.2006, 21:07:41
Post #4





Grupa: Zarejestrowani
Postów: 260
Pomógł: 0
Dołączył: 4.08.2005

Ostrzeżenie: (0%)
-----


Cytat(Luke_Star @ 12.11.2006, 20:26:16 ) *
Mam pytanko co do akcji formularzy, jak to działa w bardzo dużych skyptach? Chodzi mi dokładniej jak ustawione jest <form action="">.


Zakładając ten temat sam sobie odpowiedziałeś wpisując jego nazwę smile.gif Jeśli chcesz trzymać się MVC to powinieneś kierować dane do kontrolera - zazwyczaj będzie to index.php

Poza tym chyba lepiej będzie napisać klasę obejmującą żądania użytkowników ($_POST,$_GET, $_COOKIE, $_REQUEST) i klasę do walidacji danych. Poszukaj na forum pod słowem 'request' bo tak często są nazywane tego typu klasy.

I mały OT na koniec...

Cytat(Luke_Star @ 12.11.2006, 20:26:16 ) *
jak to działa w bardzo dużych skyptach?


Jeśli trzymasz się wzorca projektowego jakim jest MVC to raczej ciężko nazwać aplikacje napisaną w tym stylu 'skryptem'. Skrypt to coś w stylu 'all in one' - jeden index.php i w nim wszystko. Dlatego raczej ciężko spotkać 'duży' skrypt - tym bardziej w MVC.


--------------------
Załóż konto na dropbox.
Go to the top of the page
+Quote Post
thornag
post 13.11.2006, 11:46:52
Post #5





Grupa: Zarejestrowani
Postów: 504
Pomógł: 2
Dołączył: 31.03.2006
Skąd: Londyn

Ostrzeżenie: (0%)
-----


Ja u siebie mam to rozwiazane tak.

Calym requestem (http) zajmuje sie klasa wlasnie HttpRequest, to ona zarzadza danymi $_POST, $_GET itp. Do tego jest klasa Validation (czy jakokolwiek chcesz to nazwac) o interfejscie zblizonym do:

  1. <?php
  2. public static function hasMinimalLenght($iLenght, $sValue) 
  3. public static function hasMaximalLenght($iLenght, $sValue) 
  4. public static function hasOnlyPermittedCharakters($sCharakters, $sValue) 
  5. public static function hasNonPermittedCharakters($sCharakters, $sValue) 
  6. public static function isLesThan($iLess, $iValue, $bEqualOrLess = false) 
  7. public static function isMoreThan($iMore, $iValue, $bEqualOrLess = false) 
  8. public static function isEqualTo($iEqual, $iValue) 
  9. public static function isNotEqualTo($sEqual, $iValue) 
  10. public static function mustMatchRegexp($sRegexp, $sValue)
  11. public static function mustNotMatchRegexp($sRegexp, $sValue)
  12. ?>


Kiedy kieruje formularz do odpowiedniego kontrollera i akcji, ta pyta sie request o dane a pozniej przepuszcza to przez funckje walidacyjne. Rozwiazanie to jest bardzo proste i prymitywne, ale zarazem dziala poprawnie. Klase taka mozna dowolnie rozbudowywac, dodac do niej jakies lancuchy tych ograniczen, pozniej tylko podac parametry i zeby sie wszystko samo zrobilo. Ogolnie koncepcja taka zeby wykonac klase odpowiedzialna za walidacje danych.

W ksiazce PHP5 Zaawansowane Programowanie spotkalem sie tez z pomyslem umieszczenia walidacji w samej klasie Requesta. Jakos pomysl mi nie przypadl do gustu, wystarczy mi ze Request serwuje mi dane zaciapkowane (miedzy '), z obcietymi znakami html badz zamienionymi na ASCII.


--------------------
"Wizja czasu jest szeroka, lecz kiedy sie przez nia przechodzi, czas staje sie waskimi drzwiami"

Go to the top of the page
+Quote Post
Prph
post 13.11.2006, 12:24:16
Post #6





Grupa: Zarejestrowani
Postów: 338
Pomógł: 2
Dołączył: 4.03.2006
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Cytat(thornag @ 13.11.2006, 11:46:52 ) *
  1. <?php
  2. public static function hasMinimalLenght($iLenght, $sValue) 
  3. public static function hasMaximalLenght($iLenght, $sValue) 
  4. public static function hasOnlyPermittedCharakters($sCharakters, $sValue) 
  5. public static function hasNonPermittedCharakters($sCharakters, $sValue) 
  6. public static function isLesThan($iLess, $iValue, $bEqualOrLess = false) 
  7. public static function isMoreThan($iMore, $iValue, $bEqualOrLess = false) 
  8. public static function isEqualTo($iEqual, $iValue) 
  9. public static function isNotEqualTo($sEqual, $iValue) 
  10. public static function mustMatchRegexp($sRegexp, $sValue)
  11. public static function mustNotMatchRegexp($sRegexp, $sValue)
  12. ?>



Troche przekombinowana klasa. Wiecej napiszesz sie uzywajac jej metod, niz piszac normalne warunki, np: isLesThan. I nie ma sensu pisac Is/IsNot - znowu za duzo sie napiszesz. Przeciez po to jest operator negacji "!".

Pozdrawiam, Adrian.
Go to the top of the page
+Quote Post
athabus
post 13.11.2006, 13:49:13
Post #7





Grupa: Zarejestrowani
Postów: 898
Pomógł: 48
Dołączył: 2.11.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Jeśli chodzi o formularze to ostatnio znacznie bardziej preferuje gotowe rozwiązania bo
a) nie muszę wszystkiego pisać od początku
b ) znacznie szybciej tworzy się formularz i warunki do jego walicaji
c) trudno napisać naprawdę dobrą obsługę formularzy w pojedynkę
d) słabo znam js więc byłby problem ze wstępną walidacja sadsmiley02.gif

Ogólnie polecam klasę HTML_QuickForm - banalnie prosta w obsłudze a po małych ingerencjach i przeróbkach udało mi się ją dopasować do własnych potrzeb.

Co do pytania z tematu - to klasa ta ma wbudowane funkcje do walidacji i ekportu danych (nie trzeba odwoływać się przez $_POST tylko dane są od razu walidowane i w razie czego konwertowane (np. można zmienić , na . w wpisywanych liczbach). Oprócz całej sterty wbudowanych testów, można również pisać swoje własne i odwoływać się do nich poprzez funkcje zwrotne. IMHO najlepsza klasa z tych, które do tej pory widziałem
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:08