Emeğine saygı duyuyorum arkadaşım fakat mysql_query, mysql_real_escape_string vs. yani mysql fonksiyonları artık deprecated(kullanılması önerilmeyen, vadesi dolmuş) fonksiyonlardır. Ne acıdır ki bir çok büyük kuruluşlun yazılımcıları bile bundan haberdar değildir. Halbuki php.net'e biraz göz gezdirirseniz bu bilgilere kolaylıkla ulaşabilirsiniz. Bu fonksiyonların yerine artık procedural veya object oriented olarak mysqli fonksiyonları veya object oriented olarak pdo_mysql kullanılmalıdır. Eğer sql injection ı hayatınızdan tamamen çıkarmak istiyorsanız birde prepared statements ve query binding nedir ne değildir araştırmalısınız. (
http://php.net/manual/en/pdo.prepared-statements.php) Profesyonelliğe ilk adımınız bunlarla olabilir mesela.
Saygılar...
Öncelikle kullanılan yöntemler konusunda eleştirileriniz direk şahsıma geliyorsa eleştiri yapmadan önce neler yaptığımı, kim olduğumu yüzeysel olarak incelemiş olduğunuzu umut ediyorum. En basitinden 2009 yılında yayınladığım
CodeIgniter Framework video eğitim setinde Active Record ile mysql işlemlerinin nasıl yapılacağını anlattığımı görebilirsiniz.
Eğer şahsıma bir itham söz konusu değil ve genele yapılan bir eleştiriyse önceki paragrafı dikkate almanız gerekmiyor.
Bir konuyu anlatmadan önce her zaman php dilini öğrenmeye başladığım günleri hatırlarım. O günlerde yaşadığım sıkıntıları başkalarının yaşamaması için de anlatacağım konuyu mümkün olduğunca basite indirmeye ve her türlü detayı açıklamaya çalışırım. Bu derste hitap ettiğim kitlenin
başlangıç ve
orta seviyeye geçmeye çalışan kişiler olduğunu çok rahatlıkla gözlemleyebilirsiniz. PDO veya herhangi bir ORM kullanabilme seviyesinde olan birinin zaten "SQL Injection" konusunda bilgisiz olması pek mümkün değil.
Dolayısıyla hitap edilen kitlenin bu konuyu rahatlıkla anlayabilmesi için
klasik ve
yaygın kullanılan yöntemlerden ilerlemek gerekiyordu. PDO kullanan biri zaten mysql_connect komutunun ne işe yaradığını bilir ve dersi izlediğinde konuyu anlar. Ama elindeki kitapta hala "mysql_connect" komutları anlatılan, henüz object oriented ile tanışmamış birine zaten bilmediği "SQL Injection" konusunu kullan(a)madığı yöntemlerle anlatmaya çalışmak pek mantıklı bir hareket olmaz.
Sonuç olarak ders içeriğinde kullandığımız örnek kodlar bir araçtır. Amaç yazılımcılara "Kullanıcıdan aldığınız hiç bir değere güvenmeyin. Mutlaka gerekli doğrulama ve filtreleme işlemlerinden geçirin. Bunları yapmadığınız zaman SQL sorgunuz değiştirilir ve istenmeyen sonuçlar oluşur." mesajını aktarmaktır.