PDO ile MySQL Veri Güncelleme İşlemi | Update

PDO ile MySQL kayıt güncelleme işlemlerini prepare fonksiyonu ile gerçekleştiriyoruz. Bu metodu önceki derslerde fazlasıyla ayrıntılı bir biçimde işlemiştik. Prepare'nin en önemli özelliği SQL Injection açıklarından bizi kurtarmasıdır. Bu tarz açıklardan kurtulmak için prepare kullanmak zorundayız. Dilerseniz örnekler üzerinden kayıtın nasıl gerçekleştiğine bakalım.

Güvenlik Tedbirli, MySQL Veri Güncelleme İşlemi [1. YOL]

Kullanıcıdan gelen verilerin içeriği bizim için önemlidir. Buradaki önem gelen değerlerin gerçek bir veri olması veya saldırı teşkil edecek kodlar olmasıdır. "Bu devirde babana bile güvenmeyeceksin" denildiğine göre sitene gelen ziyaretçilere hiç güvenmemelisin. Veri tabanımızı koruyarak veri güncelleme işleminin nasıl olduğunu görelim.

<?php
$baslik = "Deneme Başık\"da geçen ''''''2'' ''\"'' '' '' ";
$time = date("d.m.Y - H:i:s");
$Guncelle= $vt->prepare("update makale set baslik=?,tarih=? where id=?");
$Guncelle->execute(array($baslik,$time,"2"));
?>

Yukarıdaki örnekte; Veri tabanında bulunan bir veriyi güncellerken karşılaşacağımız, bizlere sıkıntı yaratacak karakterler yer almaktadır. Bu kullanım ile herhangi bir düzenleme yapmamamıza rağmen kayıt işlemi gerçekleşecekti. Fakat PDO yerine mysql_ ifadesini kullanmış olsaydık güncelleme işlemi gerçekleşmeyeceği gibi, gelen saldırı yüklü kod ile veri tabanımız hasar almış olacaktı.

PDO kullanarak bu şekilde gelen verileri neredeyse hiç filtreden geçirmeksizin güncelleme işlemini yapmak mümkündür. Bu sayede kod alanlarımız az ve temiz bir görünüme sahip olacaktır. Bununla beraber performanslı bir sistem hazırlamış olacağız.

Güvenlik Tedbirli, MySQL Veri Güncelleme İşlemi [2. YOL]

Öncelikle bu yeni bir kullanım değildir. Daha doğrusu burada farklı bir işlem gerçekleştirmiyoruz. Sadece belirlenen değerleri birer değişkene atayıp o şekilde işlemlerin yapılmasını sağlıyoruz. Örnek olarak aşağıda yer alan kodu incelebilirsiniz.

<?php
$baslik1 = "Deneme Başık\"da geçen ''''''2'' ''\"'' '' '' ";
$time1 = time();
$Guncelle1= $vt->prepare("update makale set baslik=:baslik,tarih=:tarih where id=:id");
$Guncelle1->execute(array("baslik" => $baslik1, "tarih" => $time1, "id" => "2"));
?>

Bu kod ile de 1. Yolda yer alan kod arasında işlem ve güvenlik anlamında herhangi bir fark yoktur. Buradaki tek fark " ? " (Soru İşareti) ile belirlediğimiz yeri artık bir değişken adı ile belirlemedir. Bu yöntem sadece kod sahibinin tarzına bağlı olarak kullanabileceği bir değişik yoldur.
- 06.06.2014 / 16:29:22 5

Sosyal Medya Paylaşım Alanı

Bunlarda İlginizi Çekebilir

Genel Makaleler

Nereden Nereye Geldik | Site Geçmişi Hakkında

Kategori: Genel Makaleler | 04.06.2013
4:42 Css Dersleri

Css ile Genişlik ve Yükseklik Belirtmek

Kategori: Css Dersleri | 04.05.2013
17:23 Php Dersleri

Post ve Get Komutu ile Veri Yollama

Kategori: Php Dersleri | 02.05.2013
Genel Makaleler

Atatürk'ün El Yazısı Font Oldu

Kategori: Genel Makaleler | 03.05.2013
6:54 Php Dersleri

Php ile Dosya Silme İşlemi | Unlink

Kategori: Php Dersleri | 03.05.2013

Yorum Listesi (3) # YorumYap

  • birisi (06.06.2014 - 21:51:51)
    dersleriniz ve anlatımınız gerçekten iyi pdo da türkçe kaynakta bu kadar sıkıntı çekiyorken sizin bu videoları ücretsiz olarak sunmanız süper ,
    Derslerinizin ve başarılarınızın devamını dilerim.
  • mizikcicocuk (01.07.2015 - 20:40:35)
    küçük bir soru sormak istiyorum bu konuda. post'tan gelen id'ye göre güncelleme nasıl yapılıyor..
    $id = $_POST['id']
    $guncelle = $vt -> prepare ("update makale set baslik=?, tarih=? where id=?")
    $guncelle->execute (array( "Güncelle", "Tarih", $id))
    doğru bir dizilim mi? değilse dogrusu nedir?
  • ibrahim Çevrük (03.07.2015 - 04:38:58)
    @mizikcicocuk Aynen söylemiş olduğun gibi yapılıyor.

Hadi Sende Yorum Yap!

Yorum Gönderilmiştir. Onaylandıktan Sonra Mesajınız Yayınlanacaktır.