PDO ile MySQL Veri Tabanına Kayıt Ekleme | insert

PDO ile MySQL kayıt 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 derste hem kayıt işlemini gerçekleştireceğiz hem de bu açıklardan bizi nasıl kurtarmış olduğunu göreceğiz. Dilerseniz örnekler üzerinden kayıtın nasıl gerçekleştiğine bakalım.

Güvenlik Tedbirli, MySQL Kayıt İş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 kayıt 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");
$Kayit = $vt->prepare("insert into makale set baslik=?,tarih=?");
$Kayit->execute(array($baslik,$time));
?>

Yukarıdaki örnekte; Veri tabanına kayıt yaparken bizlere sıkıntı yaratacak karakterler yer almaktadır. Herhangi bir düzenleme yapmamamıza rağmen kayıt işlemi gerçekleşecekti. Fakat PDO yerine mysql_ ifadesini kullanmış olsaydık kayıt 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 kayıt 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 Kayıt İşlemi [2. YOL]

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();
$Kayit1 = $vt->prepare("insert into makale set baslik=:baslik,tarih=:tarih");
$Kayit1->execute(array("baslik" => $baslik1, "tarih" => $time1));
?>

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.
- 05.06.2014 / 23:49:44 11

Sosyal Medya Paylaşım Alanı

Bunlarda İlginizi Çekebilir

6:36 Php Dersleri
Genel Makaleler
5:38 Php Dersleri

Echo ve Print Komutlarının Kullanımı

Kategori: Php Dersleri | 01.02.2012
Genel Makaleler

Web Dünyası Bizlere Neler Öğretti?

Kategori: Genel Makaleler | 03.05.2013
Genel Makaleler

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

Kategori: Genel Makaleler | 03.05.2013

Yorum Listesi (4) # YorumYap

  • burhan cansız (16.07.2014 - 04:03:09)
    Eline sağlık sayende pdo yuda kavradık
  • birisi (01.09.2014 - 18:28:48)
    S.a kolay gelsin. üstad pdo nun tüm derslerini izledim gerçekten güzel bir eğitim seti olmuş devamını bekliyorum fakat benim bir sorunum var. Ben burdaki işlemin aynısını yapmama rağmen veritabanına ekleme sırasında türkçe karakterleri eklemiyor. paragrafın içinde türkçe karakter olan yere kadar olan kısmı ekliyor devamını eklemiyor. Bir çözüm yolu varsa yazabilirseniz sevinirim.
  • Mahmut Yüksel Mert (18.03.2015 - 22:27:28)
    Merhaba, ben Mahmut Yüksel Mert "birisi" isimli arkadaşım sorunun çzöümü şu şekilde;

    PHP veri tabanı bağlantı dosyana şu kodları ekle;
    $vt->query("SET NAMES utf8"); // Buradaki $vt senin bağlantı değişkenine veridğin isim olacak.
    $vt->query("SET CHARACTER SET utf8"); // Buradaki $vt senin bağlantı değişkenine veridğin isim olacak.

    phpMyAdmin'de ise yapman gerekenler;
    karşılaştırma alanını: utf8_turkish_ci
    olarak belirle.

    Ayarlamaları bu şekilde yaptığında sorun ortadan kalkacaktır.
  • Necdet AVCI (13.05.2015 - 11:43:00)
    pdo insert işleminde from içnde veriyi nasıl ekleyebiliriz

Hadi Sende Yorum Yap!

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