# 🚌 OtobüsTakip — PHP Hosting Kurulum Kılavuzu

## Sistem Mimarisi

```
[Admin (sen)] ──Excel Upload──▶ [PHP/MySQL - Paylaşımlı Hosting] ──API──▶ [Android Uygulama]
```

---

## 1. VERİTABANI OLUŞTUR (cPanel)

1. cPanel → **MySQL Databases** aç
2. Yeni veritabanı oluştur → örn: `kullanici_otobus`
3. Yeni kullanıcı oluştur → örn: `kullanici_db` + güçlü şifre
4. Kullanıcıyı veritabanına ekle → **"All Privileges"** ver
5. Bu bilgileri not al!

---

## 2. DOSYALARI HOSTINGE YÜKLE

### Klasör yapısı (public_html altına):

```
public_html/
└── otobus/
    ├── config.php          ← DB bilgilerini buraya gir
    ├── install.php         ← 1 kez çalıştır, sonra SİL
    ├── api/
    │   ├── stops.php
    │   ├── arrivals.php
    │   ├── schedules.php
    │   └── routes.php
    ├── admin/
    │   ├── index.html      ← Admin paneli
    │   ├── upload.php
    │   └── stats.php
    └── uploads/
        └── .htaccess       ← Güvenlik (zaten var)
```

### cPanel File Manager ile yükle:
1. cPanel → **File Manager** → `public_html` klasörüne gir
2. `otobus` klasörü oluştur
3. Zip'i upload et → Extract et

---

## 3. CONFIG.PHP'Yİ DÜZENLE

```php
define('DB_HOST', 'localhost');           // Genelde localhost
define('DB_NAME', 'kullanici_otobus');    // cPanel'den aldığın DB adı
define('DB_USER', 'kullanici_db');        // DB kullanıcı adı
define('DB_PASS', 'veritabani_sifren');   // DB şifresi

define('ADMIN_USER', 'admin');
define('ADMIN_PASS', 'GucluSifre2024!'); // DEĞİŞTİR!
```

---

## 4. TABLOLARI OLUŞTUR

Tarayıcıdan aç (1 kez):
```
https://siteadresin.com/otobus/install.php
```

**"✅ Tablolar başarıyla oluşturuldu!"** mesajını gördükten sonra
`install.php` dosyasını **File Manager'dan sil!**

---

## 5. ADMIN PANEL

```
https://siteadresin.com/otobus/admin/
```

Kullanıcı adı + şifre ile giriş yap (config.php'deki ADMIN_USER/PASS).

### Excel Formatı:

**Durak Listesi:**
| durak_adi | hat_no |
|-----------|--------|
| Ulus Meydanı | 14A |
| Kızılay | 14A |

**Sefer Saatleri:**
| hat_no | yon | durak_adi | saat |
|--------|-----|-----------|------|
| 14A | A | Ulus Meydanı | 07:00 |
| 14A | A | Kızılay | 07:15 |
| 14A | B | Kızılay | 08:00 |

> **yon** mutlaka `A` veya `B` olmalı  
> **saat** mutlaka `HH:MM` formatında olmalı (örn: `07:05`)

---

## 6. ANDROID UYGULAMASI

`ApiClient.kt` içinde sadece şu satırı düzenle:

```kotlin
private const val BASE_URL = "https://siteadresin.com/otobus/"
```

Sonra Android Studio'da Build → Run.

---

## 7. API TEST

```
https://siteadresin.com/otobus/api/stops.php
https://siteadresin.com/otobus/api/arrivals.php?stop=Kızılay&direction=A
https://siteadresin.com/otobus/api/schedules.php?route=14A
https://siteadresin.com/otobus/api/routes.php
```

---

## 8. SORUN GİDERME

| Sorun | Çözüm |
|-------|-------|
| "Access denied" hatası | DB_USER/PASS yanlış, cPanel'den kontrol et |
| Beyaz sayfa | PHP hata logunu cPanel'den kontrol et |
| Android bağlanamıyor | BASE_URL'in sonunda `/` olduğundan emin ol |
| Saat yanlış | Hosting zaman dilimini cPanel'den Türkiye'ye al (UTC+3) |

### Hosting zaman dilimi (cPanel):
`cPanel → Select PHP Version → php.ini` içine ekle:
```
date.timezone = "Europe/Istanbul"
```

---

## ÖNEMLİ GÜVENLİK

- `install.php`'yi çalıştırdıktan sonra **mutlaka sil**
- `config.php`'yi asla paylaşma
- Admin şifreni güçlü yap
