Zdravím všechny! Potřeboval bych poradit čím vším mám prohnat příchozí parametry z formuláře (post, get) než s nimi začnu tvořit sql dotazy. Vím že existují funkce htmlspecialchars, addslashes, get_magic_quotes_gpc, ale nevím přesně jak je zkombinovat a jestli to vůbec bude dostatečné. Mám je použít takto?
$hodnota1 = get_magic_quotes_gpc() ? htmlspecialchars($_REQUEST['hodnota1']) : htmlspecialchars(addslashes($_REQUEST['hodnota1']));
Také jsem zkoušel toto:
$hodnota1 = htmlspecialchars($_REQUEST['hodnota1'], ENT_QUOTES);
ale toto jen převede ' na entitu, což je nepraktické. Možná by také nebylo od věci převádět znak % na \% ?
Zapomnel jsem dodat, ze bych potreboval aby to bylo nezavisle na hostingu - proto to overovani get_magic_quotes_gpc() a db pouzivam mysql
htmlspecialchars tam nedávej, to s tím nemá nic společného.
Tato funkce se používá až když chceš nějaký řetězec zobrazit na html stránce a to tak, aby se například <bla> zobrazilo opravdu takhle jak to vidíš a ne aby se to prohlížeč pokoušel brát jako tag.
Pro ukládání řetězců do sql stačí zajistit to addslashes (nebo se ujistit že je zapnuté magic quotes) a pro ukládání čísel je dobré zajistit, aby to bylo číslo, například pomocí
$a = (int)$a
Poznámka pro jistotu aby mě někdo nechtěl opravit (protože jak jsem to napsal to může znít jinak než jsem to myslel) - ono stačí i číslo projet tím addslashes, ale mi osobně připadá logičtější zajistit ten převod na číslo, tím se zabrání nejen pokusu o nabourání ale i případným chybám když uživatel zadá hloupost. Ideální třeba když předáváš ID něčeho odkazem pomocí GET proměnné. Tam to může někdo třeba i nechtíc změnit z ?id=15 na ?id=15d a tím převodem zabráníš zbytečné chybě ;)