# PORTFOLIO SİTESİ GÜNCELLEME NOTLARI Bu dosyada statik HTML sitenizi dinamik bir PHP/MySQL uygulamasına çevirirken yapılan tüm değişiklikler ve detaylar yer almaktadır. --- ## 1. VERİTABANI VE SQL YAPISI (MySQL) Sistemde `portfolio` adında bir veritabanı oluşturuldu ve PDO (PHP Data Objects) kullanılarak güvenli bağlantı sağlandı. İçerisinde 3 adet temel tablo bulunmaktadır: ### Tablo 1: admin_users Amacı: Yönetim paneline güvenli giriş yapacak kullanıcı bilgilerini tutar. Parolalar açık metin olarak değil, `password_hash()` fonksiyonu ile kriptolanarak (Bcrypt) saklanmaktadır. - `id` (INT, AUTO_INCREMENT, PRIMARY KEY) - `username` (VARCHAR 50, UNIQUE) -> Sistemdeki kullanıcı adınız. - `password` (VARCHAR 255) -> Kriptolanmış parola. - `created_at` (TIMESTAMP) -> Kayıt oluşturulma tarihi. ### Tablo 2: projects Amacı: Ana sayfada sergilenecek ana projelerin temel verilerini tutar. - `id` (INT, AUTO_INCREMENT, PRIMARY KEY) - `title` (VARCHAR 100) -> Proje başlığı. - `description` (TEXT) -> Proje açıklaması. - `project_url` (VARCHAR 255) -> Varsa projeye veya GitHub'a giden bağlantı. - `display_order` (INT) -> Sürükle-bırak sıralaması için paneldeki sırasını tutan sayı. - `main_image` (VARCHAR 255) -> Ana sayfada (Swiper karesinde) görünecek ana kapağın dosya yolu. - `created_at` (TIMESTAMP) -> Eklenme zamanı. ### Tablo 3: project_images Amacı: Her projenin kendi detay sayfasında görüntülenecek "Galeri" görsellerini tutar. "projects" tablosuna ilişkisel(Foreign Key) olarak bağlıdır. Ana proje silindiğinde (ON DELETE CASCADE) ona ait galeri görsel kayıtları da otomatik silinir. - `id` (INT, AUTO_INCREMENT, PRIMARY KEY) - `project_id` (INT, FOREIGN KEY REFERENCES projects(id) ON DELETE CASCADE) - `image_path` (VARCHAR 255) -> Yüklenen galeri görselinin yolu. - `created_at` (TIMESTAMP) --- ## 2. GÜVENLİK VE ADMİN PANELİ (admin/...) - **Oturum Yönetimi:** `auth.php` ile tüm admin sayfaları PHP `$_SESSION` ile korundu. Giriş yapmayan (veya sadece Inspect Element ile bakan) kimse panele erişemez. - **SQL Injection:** Tüm veritabanı sorguları `PDO::prepare()` ile yazıldı, böylece dışarıdan sisteme sızma veya SQL komutu sızdırma girişimi imkansızlaştırıldı. - **Parola Değişimi:** Güvenliğinizi kendiniz yönetebilmeniz adına `admin/change_password` tıklandığında, sistem sizden "mevcut parolanızı" doğru girmenizi isteyecek ve ardından yeni parolanızı şifreleyerek veri tabanına işleyecek şekilde kurgulandı. - **Sürükle-Bırak:** Admin paneldeki panolar JavaScript "SortableJS" ile tut-sürükle mantığına uyarlandı ve PHP API (`api/reorder.php`) üzerinden anlık olarak MySQL'deki `display_order` alanını günceller. --- ## 3. SEO VE URL YAPILANDIRMASI (.htaccess) - Sitenin kök dizinine bir `.htaccess` dosyası oluşturuldu. - Sitenizdeki `.php` uzantıları görünümden gizlendi (örneğin `project.php?id=1` yerine `project?id=1` veya `admin/login.php` yerine `admin/login`). - `http://` yerine zorunlu `https://` (SSL) yönlendirmesi sağlandı. - Kullanıcı sadece `ugurinanc.com` yazdığında, sistem arkada pürüzsüzce `/portfolio/` ana dizinine yönlenecek şekilde ayarlandı. --- ## 4. ÖNYÜZ VE TASARIM (index.php, CSS) - Sitenizin eski statik `index.html` tasarımı tamamen `index.php`'ye aktarıldı ve Glassmorphism (Cam Efekti) Karanlık Tema ile baştan inşa edildi. - **SwiperJS:** Projeleriniz ana sayfada döngüsel ("loop" açık), kaydırılabilir ve üzerinde dokunmatik (grabCursor) çalışan kare kartlara çevrildi. - Kartların içerisindeki görseller orantılı sığdırıldı (`object-fit: cover; position: absolute;`). Kartların altına `opacity` kontrollü koyu renk degradeli, hemen okunabilen Proje Başlıkları (`project-title-display`) yerleştirildi. Üzerine gelindiğinde (Hover) kapak görseli hafifçe yakınlaşırken, başlık dinamikleşiyor. - **Detay Sayfası:** İçine girdiğinizde veritabanından çektiği Description (Açıklama) kısmı okunaklı bir şekilde belirir. Admin klasöründen projeye bağladığınız bütün "Gallery Images" görselleri de otomatik olarak büyük bir "Bannner Slider" galeri mekanizmasına dönüşerek listeleniyor. Varsayılan Yönetici Giriş Bilgileri: URL: https://ugurinanc.com/portfolio/admin/login Kullanıcı Adı: admin Şifre: adminPassword1!