INSERT INTO todo (`todo`.`desc`, `todo`.`date`, `todo`.`done`) VALUES('1', '2021-05-29', 0); DELETE FROM todo; #', '2021-05-22', 0)
Kórip turǵanımızday Delete ámeli SQL kod izinde kelip atır hám maǵlıwmatlar bazasına Insert ámeli orınlanǵannan keyin kestedegi barlıq elementler óshirilip jiberilmekte. Bunday hádiyselerdiń aldın alıw ushın kodtı tómendegishe ózgertiwimiz múmkin.
include("dbconnect.php");
include("utils.php");
$title = replaceQuotes($_POST['desc']);
$date = replaceQuotes($_POST['date']);
$q = "INSERT INTO todo (`todo`.`desc`, `todo`.`date`, `todo`.`done`)
VALUES('".$title."', '".$date."', 0)";
$x = mysqli_multi_query($con, $q);
Bunda kiriwshi maǵlıwmatlardı SQL sorawǵa qosıwdan aldın olardı replaceQuotes funksıyası menen filtrlep atırmız. Bul funksıya tómendegishe jaratılǵan:
function replaceQuotes($str) {
return str_replace(array("'","\"","'",'"'),
array("'", """, """), $str);
}
Bul funksıya tırnaqsha belgilerin html degi arnawlı belgilerge ózgertedi hám sol sebepli bunda SQL soraw mánisi ozgermeydi. Nátiyje tómendegishe boladı:
Simvollardı html degi arnawlı belgilerge ózgertiwge PHP tilindegi tómendegilerdi funksıyalardıda qollansaq boladı, bunda kod tómendegishe ózgeredi:
$title = htmlentities($_POST['desc'], ENT_QUOTES);
$date = htmlentities($_POST['date'], ENT_QUOTES);
yamasa tómendegi
$title = htmlspecialchars($_POST['desc'], ENT_QUOTES, "UTF-8");
$date = htmlspecialchars($_POST['date'], ENT_QUOTES, "UTF-8");
Simvollardı SQL sorawǵa qáwipsiz jiberiwdiń jáne bir jolı bul olardı ekranlaw bolıp tabıladı. Bunda arnawlı belgiler aldına “ \ ” belgisi qoyıladı. Bunıń ushın tómendegi funkcıyalardı qollanıwımız múmkin:
Dostları ilə paylaş: |