[PHP] mvc 2 pytania

0

Witam serdecznie,
Mam takie 2 wątpliwości:
gdzie w modelu mvc umieścić funkcje odpowiedzialne za zabezpieczenie danych trafiających do zapyta sql - w modelu?(chodzi odpowiednie zabezpieczenie znaków końca zapytania sql). Czyli gdzie umieścić funkcje "zmieniająca" dane na bezpieczne dla sql i z powrotem.
Jeżeli widok wyświetla np obrazki to powinien otrzymać pełne ścieżki do nich czy może je sam generować(np. otrzyma nazwa pliku + sam dopisuje folder - folder jest taki sam dla wszystkich)?

Pozdrawiam.

0
tomii napisał(a)

gdzie w modelu mvc umieścić funkcje odpowiedzialne za zabezpieczenie danych trafiających do zapyta sql - w modelu?(chodzi odpowiednie zabezpieczenie znaków końca zapytania sql). Czyli gdzie umieścić funkcje "zmieniająca" dane na bezpieczne dla sql i z powrotem.

hmm ogolnie filtrowanie danych do unimozliwienia sql injection mozesz wrzucic w klase modelu bo to uprosci projekt (wrzuc do klasy bazowej), natomiast sama validacja i filtracja danych - ja to wrzucam do kontrolera dlatego ze jest to bardziej elastyczne, dokladnie filtry i validatory siedza w modelu formularza a kontroler sprawdza czy jest post request i validuje formularz.

tomii napisał(a)

Jeżeli widok wyświetla np obrazki to powinien otrzymać pełne ścieżki do nich czy może je sam generować(np. otrzyma nazwa pliku + sam dopisuje folder - folder jest taki sam dla wszystkich)?

ja bym wrzucil do widoku tylko nazwe pliku - jak zmieni ci sie struktura katalogow nie bedziesz musial grzebac w bazie

0
  1. Czego używasz do łączenia się z bazą danych? Jeżeli jakiegoś ORM (Propel, Doctrine) to nie musisz się martwić. Jeśli PDO i używasz prepared statements + bindValue() lub bindParam() to również nie musisz się tym martwić - PDO zrobi to za ciebie. Natomiast jeśli używasz swoich klas do obsługi baz danych, to zabezpieczenia dla MySQL'a umieść w klasie obsługi MySQL'a, zabezpieczenia dla SQL Server w klasie obsługi SQL Server itp. + jakaś metoda "escape()", która na podstawie używanego połączenia zadecyduje sama którego użyć.

Dane przychodzące "z powrotem", czyli z bazy danych do skryptu PHP nie trzeba z niczego oczyszczać.

  1. Nie musisz podawać widokowi za każdym razem pełnej ścieżki do pliku (No chyba że widok bez tego ich nie znajdzie :) ).
0

Ok jeżeli chodzi o pierwsze pytanie to już wiem.
Jeżeli chodzi o drugie to np widok dostaje nazwę pliku i na tej postawie wyświetla obrazek z folderu /mini jako link do obrazka z folderu /norm - czy ścieżki do mini i norm powinienem generować w widoku czy dostarczyć do niego pełne ścieżki gotowe?

0
tomii napisał(a)

Ok jeżeli chodzi o pierwsze pytanie to już wiem.
Jeżeli chodzi o drugie to np widok dostaje nazwę pliku i na tej postawie wyświetla obrazek z folderu /mini jako link do obrazka z folderu /norm - czy ścieżki do mini i norm powinienem generować w widoku czy dostarczyć do niego pełne ścieżki gotowe?

generuj sciezki w widoku, w bazie trzymaj tylko to co potrzebujesz, np: nazwe pliku miniaturki i nazwe pliku orginalnego

0

Czyli można generować w widoku a nie generować w modelu trzymając jedynie nazwę w bazie?

0

widok nie moze zapisywac danych do modelu, i nie powinien pobierac samemu modelu, przekazujesz model do widoku i widok moze wygenerowac wszystko co jest niezbedne aby poprawnie wszystko wyswietlic

0

Dzięki.

0

a nie łatwiej było by przygotować sobie helpera odpowiedzialnego za przygotowanie zdjęć? jakaś klasa z metodami statycznymi tworząca na wezwanie np sam tag img na podstawie nazwy pliku, np coś jak helper HTML w Kohanie http://docs.kohanaphp.com/helpers/html#image

0

Takie helpery to imo trochę naciąganie, jeżeli mówimy o mvc. Ja to robię w ten sposób, że powiedzmy model (klasa obrazka) ma metody getURL() i getThumbnailURL(), obiekty obrazków są przekazywane do widoku (np. w formie tablicy), a widok sobie te URLe wyciąga. Przykład dla Smarty:

{foreach from=$obrazki item=obrazek}
  <a href="{$obrazek->getURL()}">
    <img src="{$obrazek->getThumbnailURL()}" alt="cośtam" />
  </a>
{/foreach}

no i - WAŻNE - jakiekolwiek metody, działania na obiektach wywoływane z widoku nie powinny niczego już zapisywać w bazie, lub na dysku, a nawet zmieniać stanu obiektów. Poza tym oczywiście w bazie oraz w obiekcie trzymasz sobie tylko jakąś małą część nazwy pliku obrazka (np. ID), z której generujesz pełne urle miniaturki i obrazka.

Jeżeli już koniecznie robić helpery (jak ktoś ma alergię na pisanie w HTML), to właśnie powinien on być zintegrowany z widokiem (np. w Smarty można sobie dodać coś do katalogu plugins). Mogło by to wyglądać tak:

{foreach from=$obrazki item=obrazek}
  {makeimage big=$obrazek->getURL() thumb=$obrazek->getThumbnailURL() alt="cośtam"}
{/foreach}

1 użytkowników online, w tym zalogowanych: 0, gości: 1