Arama Yap Mesaj Gönder
Biz Sizi Arayalım
+90
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Almanya (German)Almanya (German) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar Euro
X

Lütfen Ülke (Bölge) Seçiniz

Türkiye (Türkçe)Türkiye (Türkçe) Almanya (German)Almanya (German) Worldwide (English)Worldwide (English)
X

Lütfen Para Birimi Seçiniz

Türk Lirası $ US Dollar Euro

Bilgi Bankası

Anasayfa Bilgi Bankası Genel PDO Nedir? PHP Veritabanı İşlemleri...

Bize Ulaşın

Konum Halkalı merkez mahallesi fatih cd ozgur apt no 46 , Küçükçekmece , İstanbul , 34303 , TR

PDO Nedir? PHP Veritabanı İşlemleri İçin PDO Rehberi

PDO Nedir ve Neden Kullanmalıyım?

PDO (PHP Data Objects), PHP'nin veritabanlarına erişimini sağlayan tutarlı ve hafif bir arayüzdür. Farklı veritabanı sistemlerine (MySQL, PostgreSQL, Oracle, SQLite, vb.) aynı PHP koduyla bağlanmanızı ve işlem yapmanızı sağlar. Bu, veritabanı sistemini değiştirmek istediğinizde kodunuzda yapmanız gereken değişiklik miktarını önemli ölçüde azaltır. PDO, güvenlik, performans ve taşınabilirlik açısından birçok avantaj sunar.

PDO'nun Temel Avantajları:

  • Taşınabilirlik: Farklı veritabanı sistemleri arasında kolayca geçiş yapabilirsiniz.
  • Güvenlik: Hazırlanmış ifadeler (Prepared Statements) kullanarak SQL injection saldırılarına karşı koruma sağlar.
  • Performans: Hazırlanmış ifadeler, sorguların tekrar tekrar derlenmesini önleyerek performansı artırır.
  • Nesne Yönelimli Yaklaşım: Veritabanı işlemlerini nesne yönelimli bir şekilde gerçekleştirmenizi sağlar.
  • Hata Yönetimi: Gelişmiş hata yönetimi özellikleri sunar.

Eğer Php ile web geliştirme yapıyorsanız ve veritabanı kullanıyorsanız, PDO kullanmak projelerinizin daha sürdürülebilir, güvenli ve performanslı olmasını sağlar.

PDO ile Hangi Veritabanlarına Bağlanabilirim?

PDO, çok çeşitli veritabanı sistemlerini destekler. İşte en yaygın olarak kullanılan veritabanlarından bazıları:

  • MySQL
  • PostgreSQL
  • Oracle
  • SQLite
  • MS SQL Server
  • IBM DB2
  • Firebird

Her veritabanı sistemi için farklı bir PDO sürücüsü (driver) kullanılır. Örneğin, MySQL için `PDO_MYSQL`, PostgreSQL için `PDO_PGSQL` sürücüsü kullanılır. Bu sürücülerin PHP kurulumunuzda etkinleştirilmiş olması gerekir.

Önemli Not: Kullanmak istediğiniz veritabanı sisteminin PDO sürücüsünün PHP yapılandırma dosyanızda (php.ini) etkinleştirilmiş olduğundan emin olun. Genellikle, satırın başındaki noktalı virgülü kaldırarak ilgili sürücüyü etkinleştirebilirsiniz (örneğin, `;extension=pdo_mysql` satırını `extension=pdo_mysql` olarak değiştirin).

PDO ile Veritabanına Nasıl Bağlanırım?

PDO ile veritabanına bağlanmak için aşağıdaki adımları izleyebilirsiniz:

  1. Veritabanı Bağlantı Bilgilerini Belirleyin: Veritabanı sunucu adresi (host), veritabanı adı (dbname), kullanıcı adı (username) ve şifre (password) gibi bilgileri edinin.
  2. PDO Nesnesi Oluşturun: `PDO` sınıfının bir örneğini oluşturun ve bağlantı bilgilerini parametre olarak geçirin.
  3. Hata Yönetimini Yapılandırın: PDO'nun hataları nasıl ele alacağını belirleyin (örneğin, istisna (exception) fırlatmasını sağlayın).

Kod Örneği (MySQL):


<?php
$host = 'localhost';
$dbname = 'testdb';
$username = 'root';
$password = 'password';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    // Hata modunu istisna olarak ayarla
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    echo "Veritabanına bağlantı başarılı!";
} catch (PDOException $e) {
    echo "Bağlantı hatası: " . $e->getMessage();
}
?>

Bu kod örneğinde, `PDO` sınıfının bir örneği oluşturulurken, veritabanı sunucu adresi, veritabanı adı, kullanıcı adı ve şifre gibi bilgiler belirtilir. Ayrıca, `setAttribute` metodu ile hata modu `ERRMODE_EXCEPTION` olarak ayarlanır. Bu, bir hata oluştuğunda bir `PDOException` istisnası fırlatılmasını sağlar. Bu sayede hataları daha kolay yakalayabilir ve işleyebilirsiniz.

Adım Adım Açıklama:

  1. $host = 'localhost';: Veritabanı sunucusunun adresini belirtir. Genellikle yerel geliştirme ortamında `localhost` kullanılır.
  2. $dbname = 'testdb';: Bağlanılacak veritabanının adını belirtir.
  3. $username = 'root';: Veritabanı kullanıcı adını belirtir.
  4. $password = 'password';: Veritabanı şifresini belirtir.
  5. $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);: PDO nesnesini oluşturur. İlk parametre, Veritabanı Kaynak Adı (DSN - Data Source Name) olarak bilinir ve veritabanı türünü, sunucu adresini ve veritabanı adını içerir.
  6. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);: PDO'nun hata modunu ayarlar. PDO::ERRMODE_EXCEPTION, hataların istisna olarak fırlatılmasını sağlar.
  7. echo "Veritabanına bağlantı başarılı!";: Bağlantı başarılı olursa ekrana bir mesaj yazdırır.
  8. } catch (PDOException $e) { ... }: Bağlantı sırasında bir hata oluşursa, bu blok çalışır. Hata mesajı ekrana yazdırılır.

Hazırlanmış İfadeler (Prepared Statements) Nedir ve Neden Kullanmalıyım?

Hazırlanmış ifadeler (Prepared Statements), SQL sorgularını iki aşamada çalıştırmanızı sağlayan bir tekniktir:

  1. Hazırlama: Sorgu, veritabanı sunucusuna gönderilir ve sunucu sorguyu derler ve bir plan oluşturur. Bu aşamada, sorgudaki parametreler için yer tutucular kullanılır.
  2. Çalıştırma: Parametre değerleri yer tutuculara bağlanır ve sorgu çalıştırılır.

Hazırlanmış İfadelerin Avantajları:

  • Güvenlik: SQL injection saldırılarına karşı koruma sağlar. PDO, parametre değerlerini otomatik olarak güvenli hale getirir.
  • Performans: Aynı sorguyu birden çok kez çalıştırmanız gerekiyorsa, sorgu sadece bir kez derlenir ve sonraki çalıştırmalarda sadece parametre değerleri değiştirilir. Bu, performansı önemli ölçüde artırır.

Kod Örneği:


<?php
$host = 'localhost';
$dbname = 'testdb';
$username = 'root';
$password = 'password';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Hazırlanmış ifade
    $sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
    $stmt = $pdo->prepare($sql);

    // Parametreleri bağla
    $name = "John Doe";
    $email = "[email protected]";
    $stmt->bindParam(':name', $name);
    $stmt->bindParam(':email', $email);

    // Sorguyu çalıştır
    $stmt->execute();

    echo "Yeni kayıt başarıyla eklendi!";

} catch (PDOException $e) {
    echo "Hata: " . $e->getMessage();
}
?>

Bu kod örneğinde, `prepare` metodu ile hazırlanmış bir ifade oluşturulur. Daha sonra, `bindParam` metodu ile parametre değerleri yer tutuculara bağlanır. Son olarak, `execute` metodu ile sorgu çalıştırılır. Bu yöntem, veritabanı işlemlerinin güvenliğini ve performansını artırmanın etkili bir yoludur.

Veri Seçme (SELECT) İşlemleri Nasıl Yapılır?

PDO ile veritabanından veri seçmek için aşağıdaki adımları izleyebilirsiniz:

  1. SQL Sorgusunu Oluşturun: Veri seçmek için bir `SELECT` sorgusu oluşturun.
  2. Sorguyu Hazırlayın: `prepare` metodu ile sorguyu hazırlayın.
  3. Sorguyu Çalıştırın: `execute` metodu ile sorguyu çalıştırın.
  4. Sonuçları Alın: `fetch`, `fetchAll` veya `fetchObject` gibi metotlarla sonuçları alın.

Kod Örneği:


<?php
$host = 'localhost';
$dbname = 'testdb';
$username = 'root';
$password = 'password';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // SQL sorgusu
    $sql = "SELECT id, name, email FROM users";
    $stmt = $pdo->prepare($sql);

    // Sorguyu çalıştır
    $stmt->execute();

    // Sonuçları al
    $results = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // Sonuçları ekrana yazdır
    foreach ($results as $row) {
        echo "ID: " . $row['id'] . "<br>";
        echo "Name: " . $row['name'] . "<br>";
        echo "Email: " . $row['email'] . "<br>";
        echo "<br>";
    }

} catch (PDOException $e) {
    echo "Hata: " . $e->getMessage();
}
?>

Bu kod örneğinde, `fetchAll(PDO::FETCH_ASSOC)` metodu ile tüm sonuçlar bir dizi (array) olarak alınır. `PDO::FETCH_ASSOC` sabiti, sonuçların sütun adlarına göre indekslenmiş bir dizi olarak döndürülmesini sağlar. Farklı fetch modları kullanarak sonuçları farklı formatlarda alabilirsiniz.

Veri Ekleme (INSERT), Güncelleme (UPDATE) ve Silme (DELETE) İşlemleri Nasıl Yapılır?

PDO ile veri ekleme, güncelleme ve silme işlemleri için de hazırlanmış ifadeler kullanmak en iyi uygulamadır. İşte her işlem için örnekler:

Veri Ekleme (INSERT):


<?php
$host = 'localhost';
$dbname = 'testdb';
$username = 'root';
$password = 'password';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "INSERT INTO products (name, price) VALUES (:name, :price)";
    $stmt = $pdo->prepare($sql);

    $name = "Yeni Ürün";
    $price = 99.99;
    $stmt->bindParam(':name', $name);
    $stmt->bindParam(':price', $price);

    $stmt->execute();

    echo "Yeni ürün başarıyla eklendi!";

} catch (PDOException $e) {
    echo "Hata: " . $e->getMessage();
}
?>

Veri Güncelleme (UPDATE):


<?php
$host = 'localhost';
$dbname = 'testdb';
$username = 'root';
$password = 'password';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "UPDATE products SET price = :price WHERE id = :id";
    $stmt = $pdo->prepare($sql);

    $price = 129.99;
    $id = 1;
    $stmt->bindParam(':price', $price);
    $stmt->bindParam(':id', $id);

    $stmt->execute();

    echo "Ürün başarıyla güncellendi!";

} catch (PDOException $e) {
    echo "Hata: " . $e->getMessage();
}
?>

Veri Silme (DELETE):


<?php
$host = 'localhost';
$dbname = 'testdb';
$username = 'root';
$password = 'password';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "DELETE FROM products WHERE id = :id";
    $stmt = $pdo->prepare($sql);

    $id = 1;
    $stmt->bindParam(':id', $id);

    $stmt->execute();

    echo "Ürün başarıyla silindi!";

} catch (PDOException $e) {
    echo "Hata: " . $e->getMessage();
}
?>

Bu örneklerde, her işlem için uygun SQL sorgusu hazırlanır ve parametreler bağlanır. Bu işlemlerin her biri, veritabanı etkileşimlerinizin güvenliğini ve verimliliğini artırır. PDO, bu tür işlemleri kolaylaştıran güçlü bir araçtır.

PDO ile Hata Yönetimi Nasıl Yapılır?

PDO'da hata yönetimi, veritabanı işlemlerinde oluşabilecek sorunları ele almak için önemlidir. PDO, hataları ele almak için farklı yöntemler sunar:

  • Sessiz Mod: Hatalar görmezden gelinir. (Varsayılan)
  • Uyarı Modu: Hatalar bir uyarı mesajı olarak görüntülenir.
  • İstisna Modu: Hatalar bir `PDOException` istisnası olarak fırlatılır.

İstisna Modu (ERRMODE_EXCEPTION) Kullanımı:

İstisna modu, hataları ele almanın en iyi yoludur. Bir hata oluştuğunda bir `PDOException` istisnası fırlatılır ve bu istisna bir `try-catch` bloğu ile yakalanabilir. Bu, hataları daha kolay tespit etmenizi ve işlemenizi sağlar.

Kod Örneği:


<?php
$host = 'localhost';
$dbname = 'testdb';
$username = 'root';
$password = 'password';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Hatalı bir SQL sorgusu
    $sql = "SELECT * FROM non_existent_table";
    $pdo->query($sql); // Bu satır bir PDOException fırlatır

} catch (PDOException $e) {
    echo "Hata: " . $e->getMessage();
}
?>

Bu kod örneğinde, `non_existent_table` adında bir tablo olmadığı için bir hata oluşur ve bir `PDOException` istisnası fırlatılır. Bu istisna `catch` bloğu tarafından yakalanır ve hata mesajı ekrana yazdırılır. Bu, uygulamanızın hatalara karşı daha dayanıklı olmasını sağlar. Unutmayın, uygun hata yönetimi, sağlam ve güvenilir uygulamalar geliştirmenin temelidir.

PDO ile Transaction (İşlem) Yönetimi Nasıl Yapılır?

Transaction (işlem) yönetimi, birden çok veritabanı işlemini tek bir mantıksal birim olarak gruplandırmanızı sağlar. Bir işlem içindeki tüm işlemler başarılı olursa, değişiklikler kalıcı olarak veritabanına kaydedilir. Ancak, bir işlem içindeki herhangi bir işlem başarısız olursa, tüm değişiklikler geri alınır (rollback). Bu, veritabanı tutarlılığını sağlamak için önemlidir.

PDO ile Transaction Kullanımı:

  1. İşlemi Başlatın: `beginTransaction()` metodu ile işlemi başlatın.
  2. Veritabanı İşlemlerini Gerçekleştirin: Gerekli tüm veritabanı işlemlerini yapın.
  3. İşlemi Onaylayın (Commit): Tüm işlemler başarılı olursa, `commit()` metodu ile işlemi onaylayın. Bu, değişikliklerin kalıcı olarak kaydedilmesini sağlar.
  4. İşlemi Geri Alın (Rollback): Herhangi bir işlem başarısız olursa, `rollBack()` metodu ile işlemi geri alın. Bu, tüm değişikliklerin iptal edilmesini sağlar.

Kod Örneği:


<?php
$host = 'localhost';
$dbname = 'testdb';
$username = 'root';
$password = 'password';

try {
    $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // İşlemi başlat
    $pdo->beginTransaction();

    // Birinci işlem: Yeni bir kullanıcı ekle
    $sql1 = "INSERT INTO users (name, email) VALUES (:name, :email)";
    $stmt1 = $pdo->prepare($sql1);
    $stmt1->bindParam(':name', $name);
    $stmt1->bindParam(':email', $email);
    $name = "Alice Smith";
    $email = "[email protected]";
    $stmt1->execute();

    // İkinci işlem: Yeni bir profil oluştur
    $sql2 = "INSERT INTO profiles (user_id, bio) VALUES (:user_id, :bio)";
    $stmt2 = $pdo->prepare($sql2);
    $stmt2->bindParam(':user_id', $user_id);
    $stmt2->bindParam(':bio', $bio);
    $user_id = $pdo->lastInsertId(); // Son eklenen kullanıcının ID'sini al
    $bio = "Yeni kullanıcı profili";
    $stmt2->execute();

    // İşlemi onayla
    $pdo->commit();

    echo "İşlem başarıyla tamamlandı!";

} catch (PDOException $e) {
    // İşlemi geri al
    $pdo->rollBack();
    echo "Hata: " . $e->getMessage();
}
?>

Bu kod örneğinde, iki veritabanı işlemi (yeni kullanıcı ekleme ve yeni profil oluşturma) tek bir işlem içinde gerçekleştirilir. Eğer herhangi bir işlem başarısız olursa, `rollBack()` metodu ile tüm değişiklikler geri alınır. Transaction yönetimi, özellikle finansal işlemler veya karmaşık veri güncellemeleri gibi kritik işlemlerde veri bütünlüğünü korumak için vazgeçilmezdir. PDO'nun transaction desteği, bu tür işlemleri güvenli ve tutarlı bir şekilde gerçekleştirmenizi sağlar.

PDO ve Diğer Veritabanı Erişim Yöntemleri Arasındaki Farklar Nelerdir?

PHP'de veritabanlarına erişmek için PDO dışında başka yöntemler de bulunmaktadır. Örneğin, `mysqli` (MySQL Improved Extension) ve eski `mysql` uzantısı. Ancak, PDO'nun sunduğu avantajlar nedeniyle diğer yöntemlere göre daha çok tercih edilmektedir.

PDO vs. mysqli:

Özellik PDO mysqli
Veritabanı Desteği Çoklu veritabanı sistemlerini destekler (MySQL, PostgreSQL, Oracle, vb.) Sadece MySQL veritabanını destekler
Taşınabilirlik Yüksek taşınabilirlik (farklı veritabanları arasında kolayca geçiş yapılabilir) Düşük taşınabilirlik (sadece MySQL)
Güvenlik Hazırlanmış ifadeler (Prepared Statements) ile SQL injection saldırılarına karşı gelişmiş koruma sağlar Hazırlanmış ifadeler desteklenir, ancak PDO kadar kolay ve güvenli değildir
Nesne Yönelimli Nesne yönelimli ve prosedürel yaklaşımları destekler Nesne yönelimli ve prosedürel yaklaşımları destekler

PDO vs. mysql (Eski):

Özellik PDO mysql (Eski)
Güvenlik Hazırlanmış ifadeler (Prepared Statements) ile SQL injection saldırılarına karşı gelişmiş koruma sağlar SQL injection saldırılarına karşı zayıf koruma (hazırlanmış ifadeler desteklenmez)
Veritabanı Desteği Çoklu veritabanı sistemlerini destekler Sadece MySQL veritabanını destekler
Geliştirme Aktif olarak geliştirilmektedir Artık geliştirilmemektedir ve kullanımdan kaldırılmıştır

Önemli Not: `mysql` uzantısı PHP 5.5'ten itibaren kullanımdan kaldırılmıştır ve PHP 7'de tamamen kaldırılmıştır. Bu nedenle, yeni projelerde kesinlikle kullanılmamalıdır. Eski projelerde ise, PDO veya `mysqli`'ye geçiş yapılması önerilir.

PDO'nun çoklu veritabanı desteği, güvenlik özellikleri ve aktif olarak geliştirilmesi, onu PHP veritabanı işlemlerinde en iyi seçenek haline getirmektedir. Projelerinizin geleceği için PDO'yu tercih etmek, uzun vadede daha sürdürülebilir ve güvenli bir çözüm sunar.

PDO ile İlgili Gerçek Hayattan Örnekler ve Vaka Çalışmaları

PDO'nun gerçek hayatta nasıl kullanıldığına dair bazı örnekler:

  • E-Ticaret Sitesi: Bir e-ticaret sitesinde, PDO, ürün bilgilerini, kullanıcı hesaplarını, siparişleri ve ödeme işlemlerini yönetmek için kullanılabilir. Hazırlanmış ifadeler, SQL injection saldırılarına karşı koruma sağlarken, transaction yönetimi, siparişlerin ve ödeme işlemlerinin tutarlı bir şekilde tamamlanmasını sağlar.
  • Blog Platformu: Bir blog platformunda, PDO, makaleleri, yorumları, kullanıcıları ve kategorileri yönetmek için kullanılabilir. PDO'nun taşınabilirlik özelliği, farklı veritabanı sistemlerine (örneğin, MySQL'den PostgreSQL'e) geçiş yapmayı kolaylaştırır.
  • Veri Analizi Uygulaması: Bir veri analizi uygulamasında, PDO, büyük miktarda veriyi veritabanından çekmek ve analiz etmek için kullanılabilir. PDO'nun performans özellikleri, sorguların hızlı bir şekilde çalışmasını sağlar.

Vaka Çalışması: Bir Online Eğitim Platformu

Bir online eğitim platformu, kullanıcıların derslere kaydolmasını, sınavlara girmesini ve sertifika almasını sağlamak için PDO'yu kullanmaktadır. Platform, aşağıdaki veritabanı işlemlerini PDO ile gerçekleştirmektedir:

  • Kullanıcı hesaplarını oluşturma ve yönetme
  • Dersleri, konuları ve içeriği yönetme
  • Sınavları oluşturma ve değerlendirme
  • Ödeme işlemlerini yönetme
  • Sertifikaları oluşturma ve dağıtma

Platform, PDO'nun güvenlik özelliklerinden yararlanarak, kullanıcı verilerini ve ödeme bilgilerini SQL injection saldırılarına karşı korumaktadır. Ayrıca, PDO'nun transaction yönetimi özelliği sayesinde, ödeme işlemleri sırasında herhangi bir sorun yaşanması durumunda, işlemler otomatik olarak geri alınmakta ve veri bütünlüğü sağlanmaktadır.

Görsel Açıklama (Metinsel):

Bir e-ticaret sitesinin veritabanı etkileşimlerini gösteren bir şema hayal edin. Şema, kullanıcıların web tarayıcıları aracılığıyla siteye eriştiğini, PHP kodunun PDO aracılığıyla veritabanına bağlandığını ve verilerin (ürün bilgileri, kullanıcı verileri, siparişler vb.) veritabanından çekilip web sayfalarında görüntülendiğini göstermektedir. Şema ayrıca, hazırlanmış ifadelerin ve transaction yönetiminin nasıl kullanıldığını da vurgulamaktadır.

Bu örnekler ve vaka çalışması, PDO'nun gerçek dünyadaki uygulamalarda ne kadar değerli bir araç olduğunu göstermektedir. PDO'nun sunduğu güvenlik, performans ve taşınabilirlik avantajları, projelerinizin başarısı için kritik öneme sahiptir.

Aradığınız Bilgiyi Bulamıyor musunuz?

Bilgi bankasını detaylı olarak incelediniz, fakat ihtiyacınız olan bilgiyi bulamıyorsanız,

Bir Destek Talebi Oluşturun.
Faydalı Buldunuz mu?
(177 defa görüntülendi. / 157 kişi faydalı buldu.)

Ürün ve hizmetlerimiz hakkında daha detaylı bilgi almak için hemen arayın.

Top