$baslik = $_POST ["baslik"];
$aciklama = $_POST ["aciklama"];


yukardaki inputtan post edilecek olan degerleri istediginiz tarzda beklemek cokta masumca degil mi? :)


$ekle = mysql_query("insert into dakdak (baslik,aciklama) values ('$baslik','$aciklama')");


$aciklama degiskenine bagli olan post kismina ben ';delete from dakdak where '0'='0' tarzinda bir kod yazsam veritabanindan istedigim bir tablodan istedigim veriyi silebilirim.

inputa giris yapilan yaziyi string olarak degilde direkt olarak kod olarak okuyor ve yazilan kodu calistiriyor. kotu niyetli kisilerin isine gelir.. sql injection diye arastirirsan tonlarca dokuman cikacak karsina.

sirf inputlar icin ayri ayri guvenlik onlemi almak yerine hali hazirda pdo zaten bunu yapiyor.

pdo:

$komut = $db->prepare('SELECT * FROM uyeler WHERE kullanici_adi = :kullanici LIMIT 1;');
$komut->execute([':kullanici' => $kullanici_adi]);


mysql:

$guvenli_kullanici_adi = mysql_real_escape_string($kullanici_adi);
mysql_query("SELECT * FROM uyeler WHERE kullanici_adi = '$guvenli_kullanici_adi' LIMIT 1;");


mysql_real_escape_string fonksiyonunu kullandiginda zaten error_log dosyanda su satirlar olusacak;

Deprecated: mysql_real_escape_string(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO


hatada mysqli yada pdo ya gecis yapman gerektigini soyluyor.