Güvenlik odaklı, sıfır bağımlılıklı PHP yönetim paneli. Rol/yetki sistemi, denetim kaydı, 2FA ve çift dil (TR/EN) ile kullanıma hazır.
Sıfır bağımlılık: Composer yok, npm yok, build adımı yok. Dosyaları
sunucuya kopyalayın, install.php adresini açın, panel çalışır.
Sıfır harici çağrı: Tüm CSS, JavaScript ve yazı tipleri pakete dahildir. Panel hiçbir CDN'e istek atmaz; intranet ve çevrimdışı kurulumlarda çalışır, kullanıcı IP'si üçüncü taraflara gitmez.
| Önlem | Uygulama |
|---|---|
| SQL Injection | Tüm sorgular PDO prepared statement; emülasyon kapalı |
| XSS | Tüm çıktılar htmlspecialchars() ile kaçırılır |
| CSRF | Her POST'ta hash_equals() ile token doğrulaması |
| Content-Security-Policy | script-src nonce tabanlı — 'unsafe-inline' yok |
| Clickjacking | frame-ancestors 'none' + X-Frame-Options |
| Açık yönlendirme | Dönüş URL'leri panel dizinine kısıtlanır |
| Oturum | HttpOnly, SameSite=Strict, strict mode, girişte ID yenileme |
| Oturum ömrü | Hareketsizlik + toplam süre sınırı (ayarlanabilir) |
| Yetki tazeleme | Rol ve yetkiler her istekte veritabanından okunur |
| Oturum kaçırma | User-Agent parmak izi denetimi |
| Brute force | IP bazlı hız sınırı + kullanıcı bazlı hesap kilidi |
| Şifre saklama | password_hash() (bcrypt) |
| Şifre politikası | Uzunluk, karmaşıklık ve yaygın-şifre denetimi (ayarlanabilir) |
| 2FA | TOTP (RFC 6238), QR kodu yerelde üretilir |
| Yetkisiz erişim | Her sayfa ve her POST işlemi ayrı ayrı yetki kontrolünden geçer |
| Hata sızıntısı | Üretimde yığın izi/SQL hatası gösterilmez, yalnızca loglanır |
| CSV enjeksiyonu | Dışa aktarımda formül karakterleri etkisizleştirilir |
| Soft delete | Kullanıcı ve roller silinmez, deleted_at ile işaretlenir |
2FA notu: QR kodu
includes/qr.phpiçindeki saf PHP kodlayıcı ile üretilir. TOTP secret'ı hiçbir zaman harici bir servise, tarayıcı geçmişine veya referrer başlığına düşmez.
- Listeleme, oluşturma, düzenleme, soft-delete
- Kullanıcı detayı: son giriş, IP, başarısız deneme, 2FA durumu, son işlemler
- Rol atama — kendi seviyenizin üstüne çıkamazsınız
- Hesap aktif/pasif ve kilit yönetimi
- Kullanıcı adı veya e-posta ile giriş
- Sınırsız rol ve yetki tanımı
- Seviye bazlı hiyerarşi — kendi seviyenizdeki/üstündeki rollere dokunamazsınız
- Yetki matrisi — tüm roller × yetkiler tek ekranda
- Sahip olmadığınız bir yetkiyi başkasına atayamazsınız
- Yerleşik yetkiler:
ADMIN_PANEL_ACCESS,LOG_VIEW,ROLE_MANAGE,PERMISSION_MANAGE,USER_VIEW,USER_CREATE,USER_UPDATE,USER_DELETE
- Profil sayfası — her kullanıcı, rolü ne olursa olsun kendi e-postasını ve şifresini değiştirebilir (mevcut şifre doğrulamasıyla)
- 2FA kurulumu — QR ile bağla, kodla doğrula, kodla kapat
- Şifre sıfırlama — yönetici, tek kullanımlık ve 1 saat geçerli bir bağlantı üretir. E-posta/SMTP yapılandırması gerekmez.
- Giriş/çıkış, kullanıcı, rol ve yetki işlemleri otomatik loglanır
- Eski/yeni değerler JSON olarak saklanır
- Aksiyon, rol ve tarih aralığı filtresi + sayfalama
- CSV dışa aktarım (Excel uyumlu UTF-8 BOM)
- Açık/koyu tema — sistem tercihini izler, manuel geçiş kalıcıdır
- Tam responsive (Bootstrap 5.3), mobil sidebar
- Dashboard: sayaçlar, 7 günlük aktivite grafiği, son işlemler
- Tablo araması, durum rozetleri, boş-veri durumları
- Silme işlemleri için onay adımı
- Türkçe ve İngilizce tam destek (363 anahtar, iki dosya birebir eşleşir)
- Yeni dil için
lang/altına tek dosya eklemek yeterli
| Bileşen | Minimum |
|---|---|
| PHP | 8.1+ |
| MySQL | 8.0+ (veya MariaDB 10.4+) |
| PHP eklentileri | pdo, pdo_mysql, mbstring, openssl |
| Web sunucusu | Apache 2.4+ veya Nginx |
XAMPP, Laragon, WAMP ve paylaşımlı hosting ortamlarında çalışır. Kurulum sihirbazı bu gereksinimleri sizin için denetler.
-
Dosyaları yükleyin. Paketi sunucunuzdaki herhangi bir dizine açın — kök dizin,
/admin,/panelfark etmez. Yollar otomatik algılanır. -
install.phpadresini açın.https://siteniz.com/admin/install.php -
Formu doldurun. Sihirbaz sırasıyla:
- sunucu gereksinimlerini denetler,
- veritabanına bağlanır (yoksa oluşturmayı dener),
- şemayı içe aktarır,
- yönetici hesabınızı sizin belirlediğiniz şifreyle oluşturur,
config/config.phpdosyasını yazar,.htaccessiçindeki hata sayfası yollarını günceller.
-
install.phpdosyasını silin. Kurulum bittiğinde sihirbaz kendini devre dışı bırakır, ancak dosyayı sunucudan kaldırmanız önerilir.
Bu pakette varsayılan kullanıcı adı/şifre yoktur. Yönetici hesabı yalnızca kurulum sırasında, sizin belirlediğiniz bilgilerle oluşturulur.
Sihirbazı kullanmak istemezseniz:
mysql -u kullanici -p -e "CREATE DATABASE admin_panel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
mysql -u kullanici -p admin_panel < sql/admin-panel.sql
cp config/config.example.php config/config.phpconfig/config.php içindeki veritabanı bilgilerini doldurun, ardından ilk
yönetici hesabını oluşturmak için yine install.php sayfasını kullanın.
Tüm ayarlar config/config.php içindedir. Açıklamalı örnek için
config/config.example.php dosyasına bakın.
| Ayar | Varsayılan | Açıklama |
|---|---|---|
env |
production |
development hataları ekranda gösterir. Canlıda production olmalı. |
base_url |
'' (otomatik) |
Panelin web yolu. Yalnızca otomatik algılama başarısız olursa doldurun. |
app_name |
Admin Panel |
Panelin adı; 2FA uygulamasında da görünür. |
session_idle_timeout |
1800 |
Hareketsizlik sınırı (saniye). 0 = kapalı. |
session_absolute_timeout |
43200 |
Toplam oturum ömrü (saniye). 0 = kapalı. |
password_min_length |
10 |
En az karakter sayısı. |
password_require_mixed_case |
true |
Büyük + küçük harf zorunlu. |
password_require_number |
true |
En az bir rakam zorunlu. |
password_require_symbol |
false |
En az bir sembol zorunlu. |
Şifre politikası değişiklikleri kullanıcı oluşturma, düzenleme, profil ve şifre sıfırlama akışlarının tamamında aynı anda geçerli olur.
.
├── assets/
│ ├── css/admin.css # Panel stilleri (açık + koyu tema)
│ ├── fonts/ # Inter + JetBrains Mono (yerel)
│ └── vendor/ # Bootstrap, Bootstrap Icons, Chart.js
├── config/
│ ├── config.example.php # Açıklamalı yapılandırma şablonu
│ ├── db.php # PDO bağlantısı
│ └── .htaccess # Dizine dışarıdan erişimi engeller
├── errors/
│ ├── _page.php # Ortak hata sayfası şablonu
│ ├── 403.php 404.php 500.php
├── includes/
│ ├── bootstrap.php # Yapılandırma, hata yönetimi, BASE_URL
│ ├── session.php # Session başlatma + dil yükleme
│ ├── session_guard.php # Zaman aşımı + yetki tazeleme
│ ├── require_admin.php # Sayfa koruma zinciri
│ ├── require_permission.php # hasPermission() / requirePermission()
│ ├── auth.php # Giriş tamamlama, başarısız deneme sayacı
│ ├── fingerprint.php # Oturum kaçırma tespiti
│ ├── rate_limit.php # IP bazlı giriş sınırlama
│ ├── validation.php # Şifre politikası + CSV güvenliği
│ ├── password_reset.php # Tek kullanımlık sıfırlama jetonları
│ ├── totp.php # TOTP (RFC 6238)
│ ├── qr.php # Saf PHP QR kodu üretici
│ ├── audit.php # logAction()
│ ├── lang.php # Dil sistemi + t()
│ └── .htaccess # Dizine dışarıdan erişimi engeller
├── lang/
│ ├── tr.php en.php
├── layout/
│ ├── header.php footer.php
├── sql/
│ └── admin-panel.sql # Tam şema
├── docs/
│ ├── DEVELOPER-GUIDE.md # Kendi modülünüzü nasıl eklersiniz
│ ├── CHANGELOG.md # Sürüm geçmişi
│ └── LICENSE-THIRD-PARTY.md # Üçüncü taraf lisans metinleri
├── examples/
│ ├── example_module.php # Çalışan örnek modül (opsiyonel)
│ └── example-module.sql # Örnek modülün tablosu + yetkileri
├── install.php # Kurulum sihirbazı (kurulumdan sonra silin)
├── login.php logout.php verify_2fa.php reset_password.php
├── dashboard.php
├── users.php create_user.php edit_user.php view_user.php
├── roles.php edit_role.php permissions.php
├── logs.php
├── profile.php setup_2fa.php
├── set_lang.php
├── index.php # Kök adres → login/dashboard yönlendirme
├── README.md LICENSE
└── .htaccess
lang/tr.phpdosyasınılang/xx.phpolarak kopyalayın ve çevirin.includes/lang.phpiçindeki_LANG_ALLOWEDdizisine dil kodunu ekleyin.set_lang.phpiçindeki izin verilen diller listesine ekleyin.layout/header.phpiçindeki dil değiştiriciye bağlantıyı ekleyin.
İki dil dosyasının aynı anahtarları içerdiğini doğrulamak için tr.php ve
xx.php anahtar listelerini karşılaştırın.
-
install.phpsunucudan silindi -
config/config.phpiçindeenv→production - HTTPS etkin (2FA ve oturum cookie güvenliği için)
-
config/veincludes/dizinlerine web'den erişilemiyor - Veritabanı kullanıcısına yalnızca gereken yetkiler verildi
- Düzenli veritabanı yedeği planlandı
Tümü pakete dahildir; ayrı indirme gerekmez. Lisans metinleri için
docs/LICENSE-THIRD-PARTY.md dosyasına bakın.
| Bileşen | Sürüm | Lisans |
|---|---|---|
| Bootstrap | 5.3.3 | MIT |
| Bootstrap Icons | 1.11.3 | MIT |
| Chart.js | 4.4.4 | MIT |
| Inter | — | SIL Open Font License 1.1 |
| JetBrains Mono | — | SIL Open Font License 1.1 |
TOTP ve QR kodu üretimi harici kütüphane kullanmaz; ikisi de bu paket içinde saf PHP ile yazılmıştır.
Ayrıntılar için docs/CHANGELOG.md dosyasına bakın.
MIT Lisansı — LICENSE dosyasına bakın. Serbestçe kullanabilir,
değiştirebilir ve dağıtabilirsiniz; tek şart telif bildirimini korumaktır.
Pakete dahil üçüncü taraf bileşenler kendi lisanslarına tabidir
(docs/LICENSE-THIRD-PARTY.md).