Selçuk adlı üyeden alıntı:
mesajı görüntüle
Nerede hata yapıyorum? [PDO]
18
●1.531
- 18-06-2014, 20:37:33Aynen. Sadece orda mysql_real_escape_string kullanmaniza gerek yok.loc adlı üyeden alıntı: mesajı görüntüle
- 18-06-2014, 21:07:54Tamamdır. Çok teşekkür ediyorum.Selçuk adlı üyeden alıntı: mesajı görüntüle
- 19-06-2014, 00:55:12Kimlik doğrulama veya yönetimden onay bekliyor.mysql_real_escape_string olayını, PDO'da yapan method quote() metodu. Araştırmanızı öneririm. PDO'da prepare() metodunu ve bunlara ek olarak bindParam vs gibi metotları kullanırsanız zaten escape işlemini yapmış oluyorsunuz. PDO bu güvenliği sağlıyor. query() metodu kullanarak ham sql yazacaksanız, söylediğim gibi dışarıdan sorguya giren değerleri quote() metodu ile filtreleyin. Başka bir işlem yapmanıza gerek kalmaz.
Ayrıca, dilerseniz PDO ile ilgili olarak yazdığım PDOx sınıfına da göz atabilirsiniz. - 19-06-2014, 09:16:45Sizin yazdığınız sınıfı biliyorum hatta paylaştığınızda ilk yorum yapan bendim sanırım_BuKi_ adlı üyeden alıntı: mesajı görüntüle

Aşağıdaki gibi bindParam kullanırken giden değerin ne olduğunu da belirteyim dedim. Sizce yeterli mi?
$update = $database->prepare('update tm_pages set title= :title, text= :text, catid= :catid, status= :status where id= :id'); $update->bindParam(':title', cleanMe($_POST['title']), PDO::PARAM_STR); $update->bindParam(':text', cleanMe($_POST['text']), PDO::PARAM_LOB); $update->bindParam(':catid', cleanMe($_POST['catid']), PDO::PARAM_INT); $update->bindParam(':status', cleanMe($_POST['status']), PDO::PARAM_INT); $update->bindParam(':id', $id, PDO::PARAM_INT); $update->execute(); - 19-06-2014, 11:29:25Gayet sağlıklı bir sorgu. cleanMe fonksiyonuna gerek yok ama tam olarak nasıl bir filtreleme yapıyorsunuz orda onu bilmiyorum. ESCAPE işlemi yapıyorsanız, PDO'da bunun üzerine escape yapacağı için, verileriniz iki kez escape işleminden geçmiş olabilir. Kontrol etmenizi öneririm. Ama cleanMe html kodları temizlemek için vs ise (strip_tags) o zaman işleminize göre kullanabilirsiniz.
- 19-06-2014, 11:45:35Teşekkürler. cleanMe fonksiyonumu ilk sayfada paylaşmıştım._BuKi_ adlı üyeden alıntı: mesajı görüntüle
function cleanMe($input) { $input = mysql_real_escape_string($input); $input = htmlspecialchars($input); $input = strip_tags($input); $input = stripslashes($input); return $input; } - 19-06-2014, 12:06:18stripslashes ve mysql_real_escape_string kısmını kaldırabilirsiniz. Ayrıca fonksiyonlar arasındaki bağıntıyı iyi kurmak gerek. Mesela strip_tags'dan önce htmlspecialchars kullanmışsınız. Bu şekilde olunca karakterler dönüşüme uğrayacağından strip_tags işlem yapmayabilir. önce html etiketleri temizleyip, sonra karakter dönüşümü yapın. ki bence olduğu gibi kaydetmeniz daha iyi. htmlspecialchars ile dönüşüm yaptırmayın. bu fonksiyona göre sadece strip_tags işinizi görecektir.
