Autor | Zpráva | ||
---|---|---|---|
mot Profil * |
#1 · Zasláno: 26. 7. 2014, 23:07:02
Zdravím, zkouším se seznámit s PDO. Mám funkci
function queryDBdata ($query) { $result = mysql_query("$query"); for ($i = 0; $i < @mysql_num_rows($result); $i ++) { $returnVar[$i] = @mysql_fetch_array ($result, MYSQL_ASSOC); } @mysql_free_result ($result); return ($returnVar); } if($_POST['un'] AND $_POST['pw']){ $dot="SELECT * FROM db WHERE un='{$_POST['un']}' AND passwd='".md5($_POST['pw'])."' "; $result=queryDBdata($dot); if(count($result)==1){ echo "OK"; }else{ echo "KO"; } } |
||
Alphard Profil |
#2 · Zasláno: 26. 7. 2014, 23:33:59
Přepsání funkce nic moc neřeší.
Bylo by vhodné zapomenout na ten způsob práce s databází, jak jej teď znáte. Databázové dotazy se ideálně v běžném kódu nesestavují jako výsledné řetězce, ale pro parametry se do šablony dotazu vkládají speciální znaky. Při vykonávání dotazu se předejí konkrétní parametry zvlášť, což umožní databázové vrstvě správně escapovat data a zajistit tak bezpečnost. Čisté PDO není úplně ideální, doporučoval bych použít dibi. Nicméně pokud chcete zůstat u čistého PDO, níže popsaný přístup podporuej pomocí php.net/manual/en/pdostatement.execute.php (je tam více možností, jak to syntakticky řešit, ale princip je stejný). Dotaz psaný v dibi by poté mohl vypadat nějak takto: $result = dibi::query('select * from db where un = %s and passwd = %s', $_POST['un'], mdp($_POST['pw']))->fetchAll() $result = dibi::select('*') ->from('db') ->where('un = %s', $_POST['un']) ->where('passwd = %s', $_POST['pw']) ->fetchAll() |
||
Časová prodleva: 10 let
|
0