Escapování návratových hodnot z formuláře a jejich následné zpracování

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
PetrHH
Člen | 49
+
0
-

Dobrý den,

vytvořil jsem si v nette formulář pro data, která půjdou do DB. Pokud do formuláře dám něco jako 0'; delete from users přepokládám, že by návratová hodnota po odeslání formuláře měla být upravena pomocí addslashes, ne? Nebo se toto dělá až při ukládání do DB? Zkusil jsem si data vypsat pomocí dump a v Laděnce vidím SQL dotaz včetně parametru, ale ten je taky v původním tvaru.

Jak zpracováváte data z rozsáhlejšího formuláře? Vypisujete ručně všechny pole jako parametry updatu/insertu nebo to děláte jinak? Jak?

Díky za váš čas!

Petr

Aurielle
Člen | 1281
+
0
-

Escapuje přímo konkrétní DB vrstva, ať už je to dibi, Nette\Database nebo Doctrine. addslashes do Nette nepatří, tato funkce navíc není schopna escapovat všechny typy „škodlivostí“, které by uživatel mohl zadat.

Filip Procházka
Moderator | 4668
+
0
-

Prostě použíj dibi nebo Nette\Database a drž se zvyklosí pro danou knihovnu. Ona sama pak bude předaná data escapovat.

PetrHH
Člen | 49
+
0
-

Děkuji za vysvětlení. Měl jsem strach, že dělám něco špatně když proměnné nebyly escapovány po výpisu dump. Používám Nette\Database takže to bude bez problémů.

Mohl bych poprosit o tip jak sestavujete sql dotaz z dat odeslaných ve formuláři? Můj formulář má asi 50 položek, takže to ručně všechno vypisovat je na nic. Zatím jsem to vyřešil vytvořením pole, kde mám názvy všech polí z formuláře a SQL dotaz chci generovat dynamicky. Problém však asi bude s převodem FALSE na 0 resp. TRUE na 1, které je v db jako tinyint. Možná to půjde přes zjištění datového typu proměnné v poli. Ještě se s tím budu nějak prát.

Petr

Filip Procházka
Moderator | 4668
+
0
-

Prvně vyzkoušej, jestli to Nette\Database náhodou neumí automaticky :)

PetrHH
Člen | 49
+
0
-

Ono to fakt umí, to čumím. Než jsem objevil Nette, PHP jsem začal nesnášet. Teď mě to zase začalo bavit. Díky za nakopnutí!