dobra ochrana proti mysql injections je nepouzivat mysql
ale v tom zmysle ze pouzijes krasne objektove mysqli. cize get parametre mozes osetrit takto:
najskor zavolas objekt mysqli
Kód:
@$con = new mysqli(SERVER, LOGIN, PASSWORD, DB_NAME);
if (mysqli_connect_errno())
die("mysqli error");
$con->autocommit(FALSE); // a vypnes autocommit
a takto selectujes z databazy podla ID
Kód:
$stmt = $con->prepare("SELECT t1, t2 FROM example WHERE id = ?;");
$stmt->bind_param("i", $_GET['id']);
$stmt->execute();
$con->commit();
$stmt->bind_result($t1, $t2);
while ($stmt->fetch()) {
echo $t1 . " " . $t2;
}
$stmt->close();
cize postupne:
select si "pripravis" tak ze co chces dosadit vymenis za ?
pomocou bind_param presne podla postupnosti otazknikov predavas parametre tejto funkcii. ale hned prvy parameter definujes ako datovy typ parametru.
cize ked mas parametre povedzme integer, integer, string, integer, tak das.
Kód:
$stmt->bind_param('iisi');
viac podrobnosti najdes na
http://php.nettiez by som odporucal regularne vyrazy alebo jednoducho ked uz nechces pouzivat mysqli tak ako si nacitaj do premennej nejaky get napr takto. ked vies ze get id bude integer tak:
Kód:
$id = (is_numeric($_GET['id'])) ? $_GET['id'] : -1;
a to potom doplnis do mysql dopytu. je toho viac. staci si vybrat.