Sistem Gereksinimleri

PHP Gereksinimleri
  • Versiyon: PHP 7.4+ (Önerilen: PHP 8.1+)
  • Memory Limit: Minimum 128MB
  • Max Execution Time: 300 saniye
  • File Upload Size: 32MB
Veritabanı
  • MySQL: 5.7+ (Önerilen: 8.0+)
  • MariaDB: 10.3+ (Alternatif)
  • PostgreSQL: 11+ (Gelişmiş)
  • SQLite: 3.25+ (Test için)
Web Sunucusu
  • Apache: 2.4+ (mod_rewrite)
  • Nginx: 1.18+ (Önerilen)
  • LiteSpeed: 5.4+
  • IIS: 10+ (Windows için)
PHP Eklentileri
  • Zorunlu: PDO, PDO_MySQL, JSON
  • Güvenlik: OpenSSL, cURL
  • String: mbstring, iconv
  • Dosya: fileinfo, zip
Sistem Kontrolü

Kurulum öncesi sisteminizdeki PHP yapılandırmasını kontrol etmek için:

php -v php -m | grep -E "pdo|mysql|json|openssl|curl|mbstring" php --ini | grep "Loaded Configuration File"

Proje Dosya Yapısı

EKA Lisans Sistemi modüler bir yapıya sahiptir. Her klasörün kendine özgü görevi vardır:

eka-lisans-sistemi/ ├── 📁 api/ # REST API Endpoints │ ├── 📄 lisans-dogrula.php # Lisans doğrulama endpoint'i │ ├── 📄 kullanici-auth.php # Kullanıcı kimlik doğrulama │ ├── 📄 webhook-handler.php # Ödeme webhook'ları │ └── 📄 api-docs.php # API dokümantasyonu ├── 📁 assets/ # Frontend Kaynakları │ ├── 📁 css/ │ │ ├── 📄 admin.css # Admin panel stilleri │ │ ├── 📄 public.css # Genel site stilleri │ │ └── 📄 components.css # Component stilleri │ ├── 📁 js/ │ │ ├── 📄 admin.js # Admin panel JavaScript │ │ ├── 📄 dashboard.js # Dashboard fonksiyonları │ │ └── 📄 validation.js # Form doğrulama │ └── 📁 images/ │ ├── 📄 logo.png # Site logosu │ └── 📄 icons/ # Çeşitli ikonlar ├── 📁 classes/ # PHP Sınıfları │ ├── 📄 Database.php # Veritabanı bağlantı sınıfı │ ├── 📄 LicenseManager.php # Lisans yönetimi │ ├── 📄 UserManager.php # Kullanıcı yönetimi │ ├── 📄 ProductManager.php # Ürün yönetimi │ ├── 📄 SecurityManager.php # Güvenlik yönetimi │ └── 📄 EmailManager.php # E-posta işlemleri ├── 📁 config/ # Yapılandırma Dosyaları │ ├── 📄 database.php # Veritabanı ayarları │ ├── 📄 app.php # Uygulama ayarları │ ├── 📄 security.php # Güvenlik ayarları │ └── 📄 email.php # E-posta ayarları ├── 📁 includes/ # Ortak Include Dosyaları │ ├── 📄 functions.php # Yardımcı fonksiyonlar │ ├── 📄 session.php # Oturum yönetimi │ └── 📄 permissions.php # Yetki kontrolü ├── 📁 languages/ # Çoklu Dil Desteği │ ├── 📄 tr.php # Türkçe dil dosyası │ ├── 📄 en.php # İngilizce dil dosyası │ └── 📄 de.php # Almanca dil dosyası ├── 📁 panel/ # Admin Panel │ ├── 📁 views/ │ │ ├── 📄 dashboard.php # Ana kontrol paneli │ │ ├── 📄 licenses.php # Lisans yönetimi │ │ ├── 📄 users.php # Kullanıcı yönetimi │ │ ├── 📄 products.php # Ürün yönetimi │ │ ├── 📄 reports.php # Raporlar │ │ └── 📄 settings.php # Sistem ayarları │ ├── 📁 components/ │ │ ├── 📄 header.php # Sayfa başlığı │ │ ├── 📄 sidebar.php # Yan menü │ │ ├── 📄 footer.php # Sayfa altı │ │ └── 📄 modals.php # Modal bileşenleri │ └── 📄 index.php # Panel ana sayfası ├── 📁 public/ # Genel Erişim Sayfaları │ ├── 📄 index.php # Ana sayfa │ ├── 📄 login.php # Giriş sayfası │ ├── 📄 register.php # Kayıt sayfası │ ├── 📄 forgot-password.php # Şifre sıfırlama │ └── 📄 verify-license.php # Lisans doğrulama ├── 📁 storage/ # Dosya Depolama │ ├── 📁 logs/ # Log dosyaları │ ├── 📁 uploads/ # Yüklenen dosyalar │ └── 📁 cache/ # Önbellek dosyaları ├── 📁 migrations/ # Veritabanı Migrasyonları │ ├── 📄 001_create_users.sql # Kullanıcılar tablosu │ ├── 📄 002_create_products.sql # Ürünler tablosu │ └── 📄 003_create_licenses.sql # Lisanslar tablosu ├── 📁 tests/ # Test Dosyaları │ ├── 📄 DatabaseTest.php # Veritabanı testleri │ ├── 📄 LicenseTest.php # Lisans testleri │ └── 📄 ApiTest.php # API testleri ├── 📄 composer.json # Bağımlılık yönetimi ├── 📄 .htaccess # Apache ayarları ├── 📄 .env.example # Çevre değişkenleri örneği ├── 📄 install.php # Otomatik kurulum ├── 📄 README.md # Proje dokümantasyonu └── 📄 LICENSE # Lisans dosyası
Proje Yapısı Avantajları
  • Modüler Mimari: Her bileşen bağımsız geliştirilebilir
  • Güvenlik: Config dosyaları web erişiminden korunmuş
  • Bakım Kolaylığı: Dosyalar mantıklı şekilde gruplandırılmış
  • Ölçeklenebilirlik: Yeni özellikler kolayca eklenebilir

Yerel Geliştirme Ortamı

1

XAMPP Kurulumu

XAMPP, Windows, macOS ve Linux için PHP geliştirme ortamıdır.

  1. XAMPP'ı indirin ve kurun
  2. XAMPP Control Panel'i açın
  3. Apache ve MySQL servislerini başlatın
  4. Tarayıcıda http://localhost adresini test edin
XAMPP Güvenlik Uyarısı

XAMPP varsayılan olarak MySQL root kullanıcısı için şifre gerektirmez. Güvenlik için şifre belirleyin.

2

Dosyaları Yerleştirme

Proje dosyalarını XAMPP htdocs klasörüne kopyalayın.

# Windows C:\xampp\htdocs\eka-lisans\ # macOS /Applications/XAMPP/htdocs/eka-lisans/ # Linux /opt/lampp/htdocs/eka-lisans/
3

Veritabanı Oluşturma

phpMyAdmin kullanarak veritabanını oluşturun.

  1. http://localhost/phpmyadmin adresine gidin
  2. "Yeni" butonuna tıklayın
  3. Veritabanı adı: eka_lisans_sistemi
  4. "Oluştur" butonuna tıklayın
4

Otomatik Kurulum

Tarayıcıda kurulum sayfasını açın ve adımları takip edin.

  1. http://localhost/eka-lisans/install.php adresine gidin
  2. Sistem gereksinimlerini kontrol edin
  3. Veritabanı bilgilerini girin
  4. Admin hesabı oluşturun
  5. Kurulumu tamamlayın
Geliştirici İpuçları
  • Debug Modu: config/app.php dosyasında debug modunu aktifleştirin
  • Log Takibi: storage/logs/ klasöründeki hata loglarını izleyin
  • Hot Reload: Değişiklikleri anında görmek için browser-sync kullanın

cPanel Hosting Kurulumu

1. Dosya Yükleme İşlemi

Adım Adım Yükleme:
  1. cPanel hesabınıza giriş yapın
  2. "File Manager" (Dosya Yöneticisi) uygulamasını açın
  3. public_html klasörüne gidin
  4. Proje dosyalarını ZIP formatında yükleyin
  5. ZIP dosyasını sağ tıklayıp "Extract" seçin
  6. Çıkarılan dosyaları public_html root'una taşıyın
Hızlı Yükleme İpucu

Büyük dosyalar için FTP kullanın. FileZilla gibi FTP istemcileri daha hızlı yükleme sağlar.

2. MySQL Veritabanı Kurulumu

Veritabanı Oluşturma:
  1. cPanel'de "MySQL Databases" bölümünü açın
  2. "Create New Database" alanına eka_lisans yazın
  3. "Create Database" butonuna tıklayın
  4. "MySQL Users" bölümünde yeni kullanıcı oluşturun
  5. Güçlü bir şifre belirleyin (min. 12 karakter)
  6. "Add User to Database" ile kullanıcıyı veritabanına ekleyin
  7. "ALL PRIVILEGES" seçip yetkileri verin
// config/veritabani.php örnek ayarları define('DB_HOST', 'localhost'); define('DB_NAME', 'cpanel_username_eka_lisans'); define('DB_USER', 'cpanel_username_dbuser'); define('DB_PASS', 'strong_database_password'); define('DB_CHARSET', 'utf8mb4');

3. PHP Konfigürasyonu

PHP Ayarları:
  1. "Select PHP Version" bölümüne gidin
  2. PHP 8.0 veya üzeri seçin (Önerilen: PHP 8.1)
  3. "Extensions" sekmesinde gerekli eklentileri aktifleştirin
  4. "Options" sekmesinde PHP ayarlarını yapılandırın
Gerekli Eklentiler
  • ✅ pdo
  • ✅ pdo_mysql
  • ✅ json
  • ✅ openssl
  • ✅ curl
  • ✅ mbstring
  • ✅ fileinfo
  • ✅ zip
PHP Ayarları
  • memory_limit: 256M
  • max_execution_time: 300
  • upload_max_filesize: 32M
  • post_max_size: 32M
  • max_input_vars: 5000

Plesk Panel Kurulumu

Plesk Dosya Yönetimi

Plesk'in modern dosya yöneticisi kullanarak proje dosyalarınızı kolayca yükleyin.

1
Plesk Panel Erişimi
  • Plesk panel URL'nize gidin (genellikle :8443 portu)
  • Domain adınızı seçin
  • "Files" menüsüne tıklayın
2
Dosya Yükleme
  • httpdocs klasörüne gidin
  • Dosyaları sürükle-bırak ile yükleyin
  • ZIP dosyasını çıkartın
  • İzinleri kontrol edin (755/644)

Plesk Veritabanı Kurulumu

-- Plesk MySQL veritabanı oluşturma CREATE DATABASE eka_lisans_system CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- Kullanıcı oluşturma ve yetkilendirme CREATE USER 'eka_user'@'localhost' IDENTIFIED BY 'secure_password'; GRANT ALL PRIVILEGES ON eka_lisans_system.* TO 'eka_user'@'localhost'; FLUSH PRIVILEGES;
Plesk Veritabanı Özelleği

Plesk'te phpMyAdmin otomatik olarak kurulu gelir. "Databases" → "Webadmin" ile erişebilirsiniz.

DirectAdmin Kurulumu

DirectAdmin Dosya İşlemleri

DirectAdmin'in sade ama güçlü arayüzü ile dosya yönetimi yapalım.

  1. DirectAdmin paneline giriş yapın
  2. "File Manager" seçeneğine tıklayın
  3. public_html klasörüne gidin
  4. "Upload Files" ile dosyaları yükleyin
  5. ZIP dosyasını seçip "Extract" butonuna tıklayın
  6. Dosya izinlerini kontrol edin
# DirectAdmin için tipik dosya izinleri find /home/username/domains/example.com/public_html/ -type d -exec chmod 755 {} \; find /home/username/domains/example.com/public_html/ -type f -exec chmod 644 {} \;

DirectAdmin MySQL Yönetimi

1
Veritabanı Oluşturma
  • "MySQL Management" bölümüne gidin
  • "Create new Database" tıklayın
  • Database Name: eka_lisans
  • Veritabanını oluşturun
2
Kullanıcı Yönetimi
  • "Create new Database User" seçin
  • Username ve güçlü şifre belirleyin
  • Kullanıcıyı veritabanına assign edin
  • Tüm yetkileri verin

Veritabanı Manuel Kurulumu

cPanel'de Veritabanı Oluşturma

1
MySQL Veritabanı Oluşturma
  1. cPanel ana sayfasında "MySQL Databases" bölümüne gidin
  2. "Create New Database" alanına eka_lisans yazın
  3. "Create Database" butonuna tıklayın
  4. Başarı mesajını onaylayın
cPanel Özelliği

cPanel otomatik olarak kullanıcı adınızı veritabanı adının başına ekler. Örnek: username_eka_lisans

2
MySQL Kullanıcısı Oluşturma
  1. Aynı sayfada "MySQL Users" bölümüne gidin
  2. "Username" alanına eka_user yazın
  3. Güçlü bir şifre oluşturun (min. 12 karakter, büyük/küçük harf, sayı, özel karakter)
  4. "Create User" butonuna tıklayın
3
Kullanıcıyı Veritabanına Ekleme
  1. "Add User to Database" bölümüne gidin
  2. Dropdown'dan oluşturduğunuz kullanıcıyı seçin
  3. Dropdown'dan oluşturduğunuz veritabanını seçin
  4. "Add" butonuna tıklayın
  5. Açılan sayfada "ALL PRIVILEGES" işaretleyin
  6. "Make Changes" butonuna tıklayın
4
phpMyAdmin ile Tabloları Oluşturma
  1. cPanel'de "phpMyAdmin" bölümüne gidin
  2. Sol menüden oluşturduğunuz veritabanını seçin
  3. "SQL" sekmesine tıklayın
  4. Aşağıdaki SQL kodunu yapıştırın ve çalıştırın

Plesk'te Veritabanı Oluşturma

1
Plesk Veritabanı Kurulumu
  1. Plesk panel'de domain adınızı seçin
  2. "Databases" menüsüne tıklayın
  3. "Add Database" butonuna tıklayın
  4. Database name: eka_lisans_sistemi
  5. Related site: domain adınızı seçin
  6. "OK" butonuna tıklayın
2
Plesk Veritabanı Kullanıcısı
  1. Oluşturulan veritabanına tıklayın
  2. "User Management" sekmesine gidin
  3. "Add Database User" tıklayın
  4. Username: eka_admin
  5. Güçlü şifre belirleyin
  6. Tüm izinleri verin
  7. "OK" ile kaydedin
3
Plesk phpMyAdmin Erişimi
  1. Veritabanı listesinde "Webadmin" sütununda phpMyAdmin linkine tıklayın
  2. Otomatik giriş yapılır
  3. "SQL" sekmesini seçin
  4. Tablo oluşturma SQL kodunu çalıştırın

DirectAdmin'de Veritabanı Oluşturma

1
DirectAdmin MySQL Management
  1. DirectAdmin paneline giriş yapın
  2. "MySQL Management" bölümüne gidin
  3. "Create new Database" linkine tıklayın
  4. Database Name: eka_lisans
  5. "Create" butonuna tıklayın
2
DirectAdmin Database User
  1. "Create new Database User" seçeneğine tıklayın
  2. Username: eka_user
  3. Password: güçlü şifre oluşturun
  4. "Create" ile kullanıcıyı oluşturun
  5. Kullanıcıyı veritabanına assign edin
3
DirectAdmin phpMyAdmin
  1. "phpMyAdmin" linkine tıklayın
  2. Veritabanı kullanıcısı ile giriş yapın
  3. Oluşturduğunuz veritabanını seçin
  4. SQL kodlarını çalıştırın
Veritabanı Tablolarını Oluşturma (SQL)

Aşağıdaki SQL kodunu phpMyAdmin veya tercih ettiğiniz MySQL yöneticisinde çalıştırarak tablolarınızı oluşturun:

-- phpMyAdmin SQL Dump -- EKA Yazılım Lisans Sistemi - Veritabanı Yapısı -- Charset: UTF8 Turkish Collation -- Engine: InnoDB SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -------------------------------------------------------- -- Sistem ayarları tablosu -- -------------------------------------------------------- CREATE TABLE `ayarlar` ( `id` int(11) NOT NULL AUTO_INCREMENT, `anahtar` varchar(100) COLLATE utf8_turkish_ci NOT NULL, `deger` text COLLATE utf8_turkish_ci DEFAULT NULL, `aciklama` varchar(255) COLLATE utf8_turkish_ci DEFAULT NULL, `guncelleme_tarihi` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `anahtar` (`anahtar`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci; -- -------------------------------------------------------- -- Kullanıcılar tablosu -- -------------------------------------------------------- CREATE TABLE `kullanicilar` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ad` varchar(100) COLLATE utf8_turkish_ci NOT NULL, `soyad` varchar(100) COLLATE utf8_turkish_ci NOT NULL, `email` varchar(255) COLLATE utf8_turkish_ci NOT NULL, `sifre` varchar(255) COLLATE utf8_turkish_ci NOT NULL, `telefon` varchar(20) COLLATE utf8_turkish_ci DEFAULT NULL, `sirket` varchar(255) COLLATE utf8_turkish_ci DEFAULT NULL, `rol` enum('admin','kullanici') COLLATE utf8_turkish_ci DEFAULT 'kullanici', `durum` enum('aktif','pasif') COLLATE utf8_turkish_ci DEFAULT 'aktif', `kayit_tarihi` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci; -- -------------------------------------------------------- -- Ürünler tablosu -- -------------------------------------------------------- CREATE TABLE `urunler` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ad` varchar(255) COLLATE utf8_turkish_ci NOT NULL, `aciklama` text COLLATE utf8_turkish_ci DEFAULT NULL, `versiyon` varchar(50) COLLATE utf8_turkish_ci NOT NULL, `fiyat` decimal(10,2) NOT NULL, `durum` enum('aktif','pasif') COLLATE utf8_turkish_ci DEFAULT 'aktif', `olusturma_tarihi` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci; -- -------------------------------------------------------- -- Lisanslar tablosu (Ana Tablo) -- -------------------------------------------------------- CREATE TABLE `lisanslar` ( `id` int(11) NOT NULL AUTO_INCREMENT, `lisans_anahtari` varchar(255) COLLATE utf8_turkish_ci NOT NULL, `anahtar` varchar(255) COLLATE utf8_turkish_ci NOT NULL, `kullanici_id` int(11) NOT NULL, `urun_id` int(11) NOT NULL, `baslangic_tarihi` date NOT NULL, `bitis_tarihi` date NOT NULL, `max_kullanim` int(11) DEFAULT 1, `ip_kisitlama` tinyint(1) DEFAULT 0, `mac_kisitlama` tinyint(1) DEFAULT 0, `aciklama` text COLLATE utf8_turkish_ci DEFAULT NULL, `domain` varchar(255) COLLATE utf8_turkish_ci DEFAULT '', `kullanim_sayisi` int(11) DEFAULT 0, `durum` enum('aktif','pasif','suresi_dolmus') COLLATE utf8_turkish_ci DEFAULT 'aktif', `ip_adresi` varchar(45) COLLATE utf8_turkish_ci DEFAULT NULL, `mac_adresi` varchar(17) COLLATE utf8_turkish_ci DEFAULT NULL, `olusturma_tarihi` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), UNIQUE KEY `lisans_anahtari` (`lisans_anahtari`), KEY `kullanici_id` (`kullanici_id`), KEY `urun_id` (`urun_id`), CONSTRAINT `lisanslar_ibfk_1` FOREIGN KEY (`kullanici_id`) REFERENCES `kullanicilar` (`id`) ON DELETE CASCADE, CONSTRAINT `lisanslar_ibfk_2` FOREIGN KEY (`urun_id`) REFERENCES `urunler` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci; -- -------------------------------------------------------- -- Lisans logları tablosu (Basit) -- -------------------------------------------------------- CREATE TABLE `lisans_loglar` ( `id` int(11) NOT NULL AUTO_INCREMENT, `lisans_id` int(11) NOT NULL, `islem_tipi` enum('dogrulama','aktivasyon','deaktivasyon','hata') COLLATE utf8_turkish_ci NOT NULL, `ip_adresi` varchar(45) COLLATE utf8_turkish_ci DEFAULT NULL, `mac_adresi` varchar(17) COLLATE utf8_turkish_ci DEFAULT NULL, `detay` text COLLATE utf8_turkish_ci DEFAULT NULL, `tarih` timestamp NOT NULL DEFAULT current_timestamp(), PRIMARY KEY (`id`), KEY `lisans_id` (`lisans_id`), CONSTRAINT `lisans_loglar_ibfk_1` FOREIGN KEY (`lisans_id`) REFERENCES `lisanslar` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci; -- -------------------------------------------------------- -- Detaylı lisans logları tablosu (API için) -- -------------------------------------------------------- CREATE TABLE `lisans_loglari` ( `id` int(11) NOT NULL AUTO_INCREMENT, `tarih` datetime NOT NULL DEFAULT current_timestamp(), `islem_turu` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, `durum` enum('BASARILI','HATA','GECERSIZ','UYARI') COLLATE utf8mb4_unicode_ci NOT NULL, `lisans_anahtari` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `domain` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `ip_adresi` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `mac_adresi` varchar(17) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `user_agent` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, `server_name` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `script_path` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `document_root` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `php_version` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `os_info` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `request_uri` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `http_referer` varchar(500) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `hata_mesaji` text COLLATE utf8mb4_unicode_ci DEFAULT NULL, `ek_bilgiler` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL CHECK (json_valid(`ek_bilgiler`)), PRIMARY KEY (`id`), KEY `idx_tarih` (`tarih`), KEY `idx_durum` (`durum`), KEY `idx_lisans` (`lisans_anahtari`), KEY `idx_domain` (`domain`), KEY `idx_ip` (`ip_adresi`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- -------------------------------------------------------- -- Varsayılan admin kullanıcısını ekle -- -------------------------------------------------------- INSERT INTO `kullanicilar` (`id`, `ad`, `soyad`, `email`, `sifre`, `telefon`, `sirket`, `rol`, `durum`, `kayit_tarihi`) VALUES (1, 'Admin', 'Kullanıcı', 'admin@ekayazilim.com', '$2y$10$sNxNRz/SVe4UaoeMXHhoY.36lfwNk/r60UiemYmdqzzdqvK3IDrjK', '08503073458', 'EKA Yazılım', 'admin', 'aktif', current_timestamp()); -- -------------------------------------------------------- -- Varsayılan sistem ayarları -- -------------------------------------------------------- INSERT INTO `ayarlar` (`anahtar`, `deger`, `aciklama`) VALUES ('site_adi', 'EKA Yazılım Lisans Sistemi', 'Site başlığı'), ('site_aciklama', 'Profesyonel yazılım lisans yönetim sistemi', 'Site açıklaması'), ('admin_email', 'admin@ekayazilim.com', 'Sistem yöneticisi e-posta adresi'), ('lisans_suresi_varsayilan', '365', 'Varsayılan lisans süresi (gün)'), ('max_deneme_suresi', '30', 'Maksimum deneme süresi (gün)'), ('email_bildirimleri', '1', 'E-posta bildirimleri aktif/pasif'), ('api_aktif', '1', 'API erişimi aktif/pasif'), ('bakım_modu', '0', 'Site bakım modu'), ('timezone', 'Europe/Istanbul', 'Sistem saat dilimi'), ('currency', 'TRY', 'Para birimi'); -- -------------------------------------------------------- -- AUTO_INCREMENT değerlerini ayarla -- -------------------------------------------------------- ALTER TABLE `ayarlar` AUTO_INCREMENT=1; ALTER TABLE `kullanicilar` AUTO_INCREMENT=2; ALTER TABLE `lisanslar` AUTO_INCREMENT=1; ALTER TABLE `lisans_loglar` AUTO_INCREMENT=1; ALTER TABLE `lisans_loglari` AUTO_INCREMENT=1; ALTER TABLE `urunler` AUTO_INCREMENT=1; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
Varsayılan Admin Hesabı
Giriş Bilgileri
  • E-posta: ekasunucu@gmail.com
  • Şifre: ekasunucu@gmail.com
  • Ad Soyad: EKA Sunucu
  • Telefon: 08503073458
  • Şirket: EKA Yazılım
  • Rol: Admin
Güvenlik Uyarısı
  • İlk giriş sonrası şifreyi değiştirin
  • Güçlü şifre kullanın (min. 8 karakter)
  • E-posta adresini isteğe bağlı güncelleyin
  • Düzenli şifre güncellemesi yapın
# Şifre hash'ini oluşturmak için PHP komutu php -r "echo password_hash('yeni_sifre', PASSWORD_DEFAULT);"
Veritabanı Bağlantı Ayarları

Veritabanı oluşturulduktan sonra config/veritabani.php dosyasını düzenleyin:

PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8 COLLATE utf8_turkish_ci" ); // PDO bağlantısı oluştur self::$baglanti = new PDO($dsn, self::$kullanici, self::$sifre, $secenekler); // Türkiye saat dilimi ayarla self::$baglanti->exec("SET time_zone = '+03:00'"); // Turkish collation ayarla self::$baglanti->exec("SET collation_connection = 'utf8_turkish_ci'"); } catch (PDOException $e) { // Hata logla error_log("Veritabanı bağlantı hatası: " . $e->getMessage()); // Kullanıcıya genel hata mesajı göster throw new PDOException("Veritabanı bağlantısı kurulamadı! Lütfen sistem yöneticisi ile iletişime geçin."); } } return self::$baglanti; } /** * Veritabanı bağlantısını kapat */ public static function baglantiKapat() { self::$baglanti = null; } /** * Tablo varlığını kontrol et */ public static function tabloKontrol($tabloAdi) { try { $baglanti = self::baglan(); $sorgu = $baglanti->prepare("SHOW TABLES LIKE ?"); $sorgu->execute(array($tabloAdi)); return $sorgu->rowCount() > 0; } catch (PDOException $e) { error_log("Tablo kontrol hatası: " . $e->getMessage()); return false; } } /** * Tüm tabloları kontrol et */ public static function tumTablolariKontrol() { $tablolar = array('kullanicilar', 'urunler', 'lisanslar', 'lisans_loglar', 'lisans_loglari', 'ayarlar'); $eksikTablolar = array(); foreach ($tablolar as $tablo) { if (!self::tabloKontrol($tablo)) { $eksikTablolar[] = $tablo; } } return $eksikTablolar; } /** * Veritabanı bağlantısını test et */ public static function baglantiyiTest() { try { $baglanti = self::baglan(); $sorgu = $baglanti->query("SELECT 1"); return $sorgu !== false; } catch (PDOException $e) { return false; } } /** * SQL sorgusu çalıştır (INSERT, UPDATE, DELETE) */ public static function sorguCalistir($sql, $parametreler = array()) { try { $baglanti = self::baglan(); $sorgu = $baglanti->prepare($sql); return $sorgu->execute($parametreler); } catch (PDOException $e) { error_log("Sorgu hatası: " . $e->getMessage() . " SQL: " . $sql); return false; } } /** * Tek kayıt getir (SELECT) */ public static function tekKayitGetir($sql, $parametreler = array()) { try { $baglanti = self::baglan(); $sorgu = $baglanti->prepare($sql); $sorgu->execute($parametreler); return $sorgu->fetch(); } catch (PDOException $e) { error_log("Kayıt getirme hatası: " . $e->getMessage()); return false; } } /** * Çoklu kayıt getir (SELECT) */ public static function cokluKayitGetir($sql, $parametreler = array()) { try { $baglanti = self::baglan(); $sorgu = $baglanti->prepare($sql); $sorgu->execute($parametreler); return $sorgu->fetchAll(); } catch (PDOException $e) { error_log("Kayıtları getirme hatası: " . $e->getMessage()); return false; } } /** * Son eklenen kaydın ID'sini getir */ public static function sonEklenenId() { try { $baglanti = self::baglan(); return $baglanti->lastInsertId(); } catch (PDOException $e) { error_log("Son ID getirme hatası: " . $e->getMessage()); return false; } } } // Örnek kullanım ve test kodu /* // Bağlantı testi if (Veritabani::baglantiyiTest()) { echo "✅ Veritabanı bağlantısı başarılı!
"; // Eksik tabloları kontrol et $eksikTablolar = Veritabani::tumTablolariKontrol(); if (empty($eksikTablolar)) { echo "✅ Tüm tablolar mevcut!
"; } else { echo "❌ Eksik tablolar: " . implode(', ', $eksikTablolar) . "
"; } // Kullanıcı sayısını kontrol et $kullaniciSayisi = Veritabani::tekKayitGetir("SELECT COUNT(*) as sayi FROM kullanicilar"); if ($kullaniciSayisi) { echo "👥 Toplam kullanıcı sayısı: " . $kullaniciSayisi['sayi'] . "
"; } } else { echo "❌ Veritabanı bağlantısı başarısız!
"; } */ ?> "