AI & Web Teknolojileri

AI ile Yapılan Siteye Veritabanı Nasıl Eklenir?

AI ile Yapılan Siteye Veritabanı Nasıl Eklenir? konusunda güvenli uygulama, doğrulama ve sık yapılan hatalar için UST Bilişim teknik rehberi.

AI ile Yapılan Siteye Veritabanı Nasıl Eklenir?Teknik bilgi • Uygulanabilir yaklaşım
AI ile Yapılan Siteye Veritabanı Nasıl Eklenir? konusunda güvenli uygulama, doğrulama ve sık yapılan hatalar için UST Bilişim teknik rehberi.

Tarayıcıdaki HTML/React kodu doğrudan MySQL parolası taşımamalıdır. İstek önce PHP/Node gibi sunucu katmanına gelir; doğrulanan sorgu sınırlı veritabanı kullanıcısıyla çalışır. Aşağıdaki örnek PHP PDO ile ürün okuma içindir.

Veritabanı parolası tarayıcıda bulunmaz
SQL güvenliği ile kullanıcı yetkilendirmesi ayrı kontrollerdir.

1. Test veritabanı ve tablo oluşturun

Aşağıdaki SQL'i veritabanı yönetici oturumunda, test sunucusunda uygulayın. Parolayı güçlü benzersiz bir değerle değiştirin; komut geçmişine veya ekran görüntüsüne açık parola bırakmayın.

CREATE DATABASE app_demo CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE TABLE app_demo.products (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(160) NOT NULL
) ENGINE=InnoDB;
INSERT INTO app_demo.products (name) VALUES ('Örnek ürün');
CREATE USER 'app_reader'@'localhost' IDENTIFIED BY 'BURAYA_GUCLU_BENZERSIZ_PAROLA';
GRANT SELECT ON app_demo.products TO 'app_reader'@'localhost';

Bu okuyucu hesabına yazma veya başka DB yetkisi verilmez. Tablo oluşturma/migration için ayrı yönetim hesabı kullanılır. FLUSH PRIVILEGES, CREATE USER/GRANT sonrası normalde gerekli değildir.

2. Bağlantı bilgilerini sunucu ortamına koyun

DB_DSN=mysql:host=localhost;dbname=app_demo;charset=utf8mb4, DB_USER=app_reader ve DB_PASS değerlerini hosting'in özel ortam yapılandırmasında tanımlayın. .env dosyası kullanıyorsanız PHP'nin onu kendiliğinden okumadığını unutmayın; uygun yükleyici gerekir. Parola web kökü dışında kalmalı.

3. Tam okuma endpoint'i

pdo_mysql uzantısı etkin PHP 8.x ortamında public/product.php örneği:

<?php
declare(strict_types=1);
header('Content-Type: application/json; charset=utf-8');
$id = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT,
    ['options' => ['min_range' => 1]]);
if ($id === false || $id === null) {
    http_response_code(400); echo '{"error":"Geçersiz id"}'; exit;
}
try {
    $pdo = new PDO(getenv('DB_DSN'), getenv('DB_USER'), getenv('DB_PASS'), [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_EMULATE_PREPARES => false,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ]);
    $stmt = $pdo->prepare('SELECT id, name FROM products WHERE id = :id');
    $stmt->execute(['id' => $id]);
    $product = $stmt->fetch();
    if (!$product) { http_response_code(404); echo '{"error":"Bulunamadı"}'; exit; }
    echo json_encode($product, JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR);
} catch (Throwable $e) {
    http_response_code(500);
    error_log('Ürün okuma işlemi başarısız.');
    echo '{"error":"İşlem tamamlanamadı"}';
}

Örnek herkese açık ürün adını okur; müşteri/sipariş endpoint'inde ayrıca oturum ve kayıt sahipliği denetimi gerekir. Prepared statement, erişim yetkisi sağlamaz.

4. Dört istekle kontrol edin

curl -i 'https://test.example.com/product.php?id=1'
curl -i 'https://test.example.com/product.php?id=999999'
curl -i 'https://test.example.com/product.php?id=abc'
curl -i 'https://test.example.com/product.php?id=-1'

Örnek veride 1 için 200, olmayan için 404, yanlış tür/negatif için 400 beklenir. 500'de PHP uzantısı, ortam değişkeni ve DB kullanıcı/host eşleşmesini inceleyin; müşteriye exception metni/parola göstermeyin.

Geri dönüş

Canlı tabloları deneme adına silmeyin. Bu örneği kaldırırken yalnız app_demo verisi ve örnek endpoint'i hedefleyin. Gerçek projede her şema değişikliğini numaralı migration ve geri dönüş planıyla uygulayın.

UST Bilişim Yaklaşımı

Bilgiyi uygulanabilir projeye dönüştürelim.

İhtiyacınızı teknik, operasyonel ve ticari açıdan değerlendirip doğru çözüm yol haritasını birlikte oluşturalım.

Projenizi Anlatın