17 komentářů k článku Nette Framework: Neprůstřelné formuláře II:

  1. int

    Form::MIME_TYPE

    Zajimalo by me, jak spolehlive je rozeznavani MIME-TYPE v Nette. Dokaze
    odhalit i pokud si nekdo pohraje s hlavickou odpovedi a mime type prepise na
    falesnou hodnotu? Aneb kontroluje se jen hodnota, ktera prijde v odpovedi, nebo
    jsou pouzity nejake slozitejsi postupy?

    1. David GrudlAutor příspěvku

      Re: Form::MIME_TYPE

      To je dobrá otázka, nikdy by se nemělo věřit datům odesílaným
      uživatelem.

      V PHP 5.3 se typ zjišťuje analýzou obsahu souboru, informace zaslaná
      browserem se rovnou zahazuje. V PHP 5.2 není ještě tahle funkce nativní,
      takže se zkouší další dvě metody a teprve když není nic k dispozici,
      vrátí se hodnota zaslaná prohlížečem.

      Ve frameworku je nástroj Requirements-Checker, který ověřuje konfiguraci
      serveru a oznámí, jestli je přítomna nějaká chytřejší funkce pro
      detekci MIME-type, nebo se na hodnotu nelze spoléhat.

  2. cckar

    kratsi a kratsi

    Uz ten serial natahujes a delas kapitoly kratsi, kvuli financim za autorstvi
    nebo jsem jen ja nedockavejsi? :-)

    1. Martin Hassman

      Re: kratsi a kratsi

      Redakční poznámka: Davidovy články jsou po dohodě s autorem od
      začátku celého seriálu nehonorované.

  3. Mat

    Validacni pravidla
    Nebylo by „hezčí“ (minimálně z pohledu intellisync :-) místo řetězce
    určujícího validátor

     …->addRule(‚myVa­lidator‘, ‚Číslo musí být dělitelné %d.‘, 8); 

    používat něco jako (řešení používané např v extGWT [Java]):

     email = new TextField();
    email.setVali­dator(new EmailValidator());

    A třída validátoru např.

     public class EmailValidator implements Validator {
    public String validate(Field f, String value) {
    if (nejaka_podminka) {
    return null;
    } else {
    return „chybova hlaska“;
    }
    }
    }

    Poznámka: co mám použít v komentářích, aby html tag „pre“
    fungoval tak, jak by měl (zachovával formátování – mezery,
    řádkování…)?

  4. Mastodont

    Dotázek

    Tentokrát je to spíš jen popis části API, takže není co hodnotit
    (jedině že bych opět jako minule zkritizoval konfiguraci zadrátovanou do
    kódu, ve srovnání třeba se Symfony a tamními jednoduchými YAML
    konfiguráky) …

    Ale jeden dotaz bych měl – když jsem se podíval do kódu Nette, tak to
    vypadá, jako že validace je pevně vázána na formuláře – to se opravdu
    uvažuje se vstupem dat jen přes formulářová pole?? Jiné frameworky
    mívají validační moduly samostatně …

    1. Onanym

      Re: Dotázek

      U YAMLu je velká režie na zpracování, potažmo nutné cachování.
      Ostatně dnes už v Symfony ani yaml validátory nejsou.

      1. Mastodont

        Re: Dotázek

        … dnes už v Symfony ani yaml validátory nejsou … „Dnes“ je snad
        ještě pořád 1.2 a tam jsou (?)

        Jinak to byl příklad, někdo má raději XML nebo INI.

        1. keff

          Re: Dotázek

          A někdo má raději konfiguraci ve formátu PHP – nemusí kvůli ní
          měnit IDE ani jazyk, a hlavně, má podporu debuggeru – můžu si na
          vytvoření validační podmínky dát breakpoint, kouknout se na příslušnou
          datovou strukturu, a krokovat přidávání prvků do formuláře, to
          u XML/INI/whatever dost dobře nejde.

          Jsem rád, že Nette podporuje konfiguraci formulářů v jazyce PHP
          (Davide, nový bullet-point do feature listu :))

          1. Onanym

            Re: Dotázek

            Milý Tomáši Kafko, vaše osobní preference nechme stranou, ale jednak asi
            používáte špatné IDE, když nezvládá elementární formáty a jednak,
            budete se divit, debugovat jdou stejně dobře.

            Že Nette umí formuláře v PHP je nečekaný zázrak přímo epických
            rozměrů (Davide, bullet rozhodně!)

        2. Onanym

          Re: Dotázek

          Pravda, asi jsou, kvůli zpětné kompatibilitě, nicméně s 1.1 přišly
          symfony forms které yaml nepoužívají – jsou takřka okopírované od
          Zendu s tím, že je Symfony umí automaticky generovat(kam se hrabe Nette :P).
          Ale jinak to správný příklad celkem je, na yamlu/xml stojí celý základ a
          od 2.0 by se měl přidat ještě takto konfigurovatelné dependency
          injection.

          Nicméně u komplexnosti Symfony to dává smysl, u Nette to asi nebude
          dvakrát žádoucí…

          1. Jiří Knesl

            Re: Dotázek

            Nesouhlasím s tím, že Symfony forms jsou odvozené ze Zend_Form. Nette
            má k Zend_Formu mnohem blíž. Symfony forms mi přijdou vzdálenější.

  5. klikač

    ochrana před CSRF?

    $form->addProtection(‚Vy­pršel ochranný časový limit,
    odešlete prosím formulář ještě jednou‘);
    Tohle že ochrání
    před Cross-Site Request Forgery (CSRF) nebo XSS?

    Tohle nanejvýše ochrání před (CSRF) nebo XSS pokud útok proběhne
    po timeoutu
    , ale ne obecně. Pokud bude timout dlouhý, bude dlouho
    otevřena možnost k útoku. Pok bude krátký, bude uživatele prudit
    odesílat formulář znova (a nejspíše ho serverem znova vygenerovat a
    vypnit).

    1. David Grudl

      Re: ochrana před CSRF?

      addProtection() nechrání přes XSS, to dělají formuláře automaticky.
      Tohle se používá jako ochrana proti CSRF.

      Délka timeoutu není rozhodující, chrání to spolehlivě nezávisle na
      timeoutu. Nebo jste našel v kódu nějakou chybu?

  6. Michal Meysha Stárek

    Au.
    Nejhorší na tom být překladatel a současně programátor je čtení dokumentace psané pouze programátory. Obecné pravidla, textové políčka. Au.

Napsat komentář

Tato diskuse je již příliš stará, pravděpodobně již vám nikdo neodpoví. Pokud se chcete na něco zeptat, použijte diskusní server Devel.cz

Zdroj: https://www.zdrojak.cz/?p=3026