# Production-Ready PHP Website Development Rules ## 1. Genel Geliştirme Prensipleri Bu projede mevcut çalışan özellikleri kesinlikle bozma. Yeni bir özellik eklerken: - Mevcut özellikleri silme. - Mevcut çalışan kodu gereksiz yere yeniden yazma. - Kullanılmayan olduğunu düşündüğün kodu kullanıcı onayı olmadan kaldırma. - Mevcut veritabanı tablolarını veya kolonlarını doğrudan silme. - Mevcut kullanıcı verilerini koru. - Yeni özellikleri mevcut sistemle geriye dönük uyumlu şekilde geliştir. - Aynı özelliği iki farklı sistemle tekrar oluşturma. - Önce mevcut kod yapısını ve veritabanını analiz et, ardından değişiklik yap. Amaç sadece çalışan kod üretmek değil, mevcut projeyi büyütülebilir ve production-ready hale getirmektir. --- ## 2. PHP Kod Standartları PHP kodu: - PHP 8.x uyumlu olmalıdır. - PDO kullanılmalıdır. - SQL sorgularında prepared statements kullanılmalıdır. - Kullanıcıdan gelen hiçbir veri doğrudan SQL sorgusuna eklenmemelidir. - `htmlspecialchars()` veya merkezi bir escape helper kullanılarak XSS saldırıları önlenmelidir. - Kritik işlemlerde CSRF token kullanılmalıdır. - Session işlemleri güvenli yapılmalıdır. - Şifreler `password_hash()` ile hashlenmelidir. - Şifre kontrolünde `password_verify()` kullanılmalıdır. - Hatalar production ortamında kullanıcıya stack trace olarak gösterilmemelidir. - Hatalar uygun şekilde loglanmalıdır. Örnek: ```php $stmt = $pdo->prepare( "SELECT * FROM users WHERE id = :id LIMIT 1" ); $stmt->execute([ ':id' => $userId ]); $user = $stmt->fetch(PDO::FETCH_ASSOC);