# BiteFight Modern Edition — Kurulum Kılavuzu

> Modern PHP 8 / MySQL tabanlı, çoklu dilli, admin panelli vampir-kurtadam tarayıcı oyunu.

## 🎯 İçerik

- ✅ **PHP 8.x** desteği (mysql_* terk edildi, PDO + prepared statements)
- ✅ **Otomatik dil tespiti** — Türkiye'den girenler otomatik Türkçe görür (TR/EN/DE/ES/FR/PT)
- ✅ **Bcrypt şifreleme** (md5/sha1 yerine)
- ✅ **CSRF koruması** tüm formlarda
- ✅ **Admin paneli** — kullanıcı yönetimi, item düzenleme, ayar paneli, log
- ✅ **245 oyun item'i** mevcut
- ✅ **Modern gotik UI** (responsive, koyu tema)

---

## 📋 Gereksinimler

| Bileşen | Versiyon |
|---------|----------|
| PHP | 8.0 veya üzeri |
| MySQL | 5.7+ veya MariaDB 10.3+ |
| Web server | Apache, Nginx, Caddy (ya da XAMPP/Laragon) |

PHP eklentileri: `pdo`, `pdo_mysql`, `mbstring`, `json`, `openssl` (genelde varsayılan açık).

---

## 🚀 Kurulum (5 dakikada)

### 1️⃣ Dosyaları Sunucuya Yükle

**Yerel (XAMPP/Laragon/WAMP):**
- ZIP'i `htdocs/bitefight/` (XAMPP) veya `www/bitefight/` (Laragon) içine çıkar.
- Tarayıcıda: `http://localhost/bitefight/`

**Hosting (cPanel/Plesk):**
- ZIP'i `public_html/bitefight/` içine yükle ve aç.

### 2️⃣ Veritabanı Oluştur

phpMyAdmin'i aç:

1. **Veritabanları** sekmesine git.
2. Yeni veritabanı: **bitefight** (Collation: `utf8mb4_unicode_ci`)
3. **Oluştur** butonuna bas.

### 3️⃣ SQL'i İçe Aktar

1. Yeni `bitefight` veritabanına gir.
2. **İçe Aktar** sekmesini aç.
3. **install.sql** dosyasını seç ve **Git** butonuna bas.

Bu SQL şunları yapar:
- 9 tablo oluşturur
- 245 oyun eşyası ekler
- **admin** isminde varsayılan yönetici hesabı oluşturur (şifre: `admin123`)

### 4️⃣ Konfigürasyonu Düzenle

`includes/config.php` dosyasını bir editörle aç ve şunları düzenle:

```php
// Veritabanı bilgileri (kendi sunucuna göre)
const DB_HOST    = 'localhost';
const DB_NAME    = 'bitefight';
const DB_USER    = 'root';        // hosting'te kendi DB kullanıcı adın
const DB_PASS    = '';            // hosting'te kendi DB şifren

// Site URL'i (sonunda / OLMASIN!)
const APP_URL    = 'http://localhost/bitefight';
//                  veya 'https://senin-domain.com'
```

### 5️⃣ Tarayıcıda Aç

`http://localhost/bitefight/` adresini ziyaret et. Karşılama ekranı görünmeli.

### 6️⃣ Admin Olarak Giriş Yap

- **Kullanıcı adı:** `admin`
- **Şifre:** `admin123`

> ⚠️ **HEMEN ŞİFREYİ DEĞİŞTİR!** Sağ üstten **Çıkış** yap, ardından `admin` ile tekrar giriş yap, **Ayarlar** kısmına gel ve şifreyi değiştir.

---

## 🌍 Dil Tespiti Nasıl Çalışır?

Site dilini şu sırayla seçer:

1. **Manuel seçim:** Kullanıcı sağ üstten dil bayrağına tıklarsa → o dil kalır
2. **Tarayıcı dili:** Tarayıcı `Accept-Language` başlığında `tr-TR` gönderirse → Türkçe
3. **IP coğrafi tespiti:** Kullanıcının IP'si Türkiye'den geliyorsa → Türkçe
4. **Varsayılan:** Yukarıdakilerin hiçbiri eşleşmezse → İngilizce

> **Cloudflare/CDN:** Cloudflare arkasındaysan, `CF-IPCountry` başlığı otomatik kullanılır (en hızlı yol).
> **Diğer hosting:** ip-api.com servisi fallback olarak kullanılır (her IP için sadece bir kez sorulur, oturum boyunca cache'lenir).

### Yeni Dil Eklemek

`lang/tr.php` dosyasını kopyala (örn. `lang/it.php` → İtalyanca), çevirileri yap, sonra `includes/config.php`'de:

```php
const LANG_AVAILABLE = ['tr', 'en', 'de', 'es', 'fr', 'pt', 'it'];
```

Ülke-dil eşlemesini eklemek için `includes/lang.php` dosyasında `COUNTRY_TO_LANG` map'ine ekle:

```php
'IT' => 'it',
```

---

## 🛡 Güvenlik Önerileri

- ✅ İlk girişte **admin şifresini değiştir!**
- ✅ Canlı sunucuda `config.php`'de `APP_DEBUG = false` olduğundan emin ol.
- ✅ HTTPS kullan (Let's Encrypt ücretsiz).
- ✅ Hosting'te `uploads/` dışındaki klasörlerin yazma izinlerini kapat.
- ✅ `install.sql` dosyasını kurulum sonrası sunucudan sil.

---

## 🎮 Oyun Akışı

| Sayfa | Açıklama |
|-------|----------|
| `index.php` | Karşılama ekranı, ırk seçimi |
| `register.php` | Yeni hesap oluşturma |
| `login.php` | Giriş |
| `main.php` | Ana karakter sayfası, statlar |
| `hideout.php` | Envanter — eşyaları kuşan/sat |
| `shop.php` | Dükkan — kategori filtreli alışveriş |
| `fight.php` | Savaş — diğer oyunculara saldır |
| `ranking.php` | Sıralama (EXP'e göre) |
| `settings.php` | Şifre/email değiştir |
| `admin/index.php` | **Admin paneli** |

---

## ⚙ Admin Paneli Özellikleri

`admin/` klasörü altındaki sayfalar sadece `is_admin = 1` olan hesaplara açıktır.

- 📊 **Dashboard** — toplam kullanıcı/klan/eşya/online sayısı
- 👥 **Kullanıcı yönetimi** — ban, altın ver, seviye ayarla, yönetici yap, sil
- ⚔ **Eşya yönetimi** — yeni item ekle, düzenle, sil, kategori bazlı listele
- 🛡 **Klan listesi** — klan ekle/gör
- ⚙ **Oyun ayarları** — gold/exp çarpanı, kayıt açık/kapalı, haber metni
- 📜 **Yönetici logu** — tüm admin işlemleri (ban, altın verme, vs.) IP ile birlikte kayıt altında

---

## 🔧 Sorun Giderme

**"Veritabanı bağlantısı kurulamadı":**
→ `includes/config.php` içindeki `DB_HOST/DB_NAME/DB_USER/DB_PASS` doğru mu?

**Türkçe karakterler bozuk görünüyor:**
→ MySQL veritabanı `utf8mb4_unicode_ci` collation kullanıyor mu?

**Admin paneli açılmıyor (403/erişim reddedildi):**
→ `users` tablosunda `name='admin'` olan satırın `is_admin` alanı `1` mi? Değilse:
```sql
UPDATE users SET is_admin = 1 WHERE name = 'admin';
```

**Dil otomatik Türkçeye geçmedi:**
→ Sağ üst köşedeki dil bayrağına tıkla — manuel seç. Bu seçim oturum boyunca hatırlanır.

**Kayıt sayfası açılınca beyaz ekran (canlıda):**
→ `config.php`'de geçici olarak `APP_DEBUG = true` yapıp hata mesajını gör. Genelde DB bağlantısı veya yetki sorunudur.

---

## 📦 Sonraki Geliştirmeler

Bu paket çekirdek + admin + savaş + envanter + dükkan içeriyor. Sonraki sürümde:

- 💬 **Mesajlaşma sistemi** (oyuncular arası)
- 🤝 **Arkadaşlık sistemi**
- 🏰 **Klan sistemi** (oluştur, üye al, klan savaşı)
- 🏛 **Pazar** (oyuncular arası item satışı)
- 🤺 **Soygun sistemi**
- 📜 **Görev sistemi**

---

## 📞 Destek

Bir sorun yaşarsan veya katkıda bulunmak istersen:
- Bu paket sıfırdan modern bir yeniden yazımdır
- Eski kodda bulduğum sorunlar:
  - `mysql_*` fonksiyonları (PHP 7+ kaldırılmış)
  - SQL injection açıkları
  - md5(sha1()) zayıf şifreleme
  - Admin paneli yokluğu
  - Item satın alma bozuk SQL nedeniyle çalışmıyor
  - Tüm UI Portekizce

Modern paketle bu sorunların hepsi çözüldü ve admin paneli, çoklu dil desteği, güçlü güvenlik eklendi.

İyi savaşlar! 🩸🐺
