<?php
/**
 * SMM Paket Satış Scripti - Kayıt Sayfası
 * @version 1.0.0
 */

require_once __DIR__ . '/config.php';

// Zaten giriş yapmışsa ana sayfaya yönlendir
if (isLoggedIn()) {
    redirect(SITE_URL);
    exit;
}

// CSRF Token
if (!isset($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
$csrfToken = $_SESSION['csrf_token'];

// POST işlemi
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // CSRF kontrolü
    if (!hash_equals($csrfToken, $_POST['csrf_token'] ?? '')) {
        setFlash('error', 'Güvenlik hatası. Lütfen tekrar deneyin.');
        redirect(SITE_URL . '/kayit.php');
        exit;
    }
    
    $fullName = trim($_POST['full_name'] ?? '');
    $username = trim($_POST['username'] ?? '');
    $email = trim($_POST['email'] ?? '');
    $phone = trim($_POST['phone'] ?? '');
    $password = $_POST['password'] ?? '';
    $passwordConfirm = $_POST['password_confirm'] ?? '';
    $terms = isset($_POST['terms']);
    
    // Validasyon
    $errors = [];
    
    // Ad Soyad
    if (empty($fullName)) {
        $errors[] = 'Ad Soyad gereklidir.';
    } elseif (mb_strlen($fullName, 'UTF-8') < 3) {
        $errors[] = 'Ad Soyad en az 3 karakter olmalıdır.';
    } elseif (mb_strlen($fullName, 'UTF-8') > 100) {
        $errors[] = 'Ad Soyad en fazla 100 karakter olabilir.';
    }
    
    // Kullanıcı adı
    if (empty($username)) {
        $errors[] = 'Kullanıcı adı gereklidir.';
    } elseif (mb_strlen($username, 'UTF-8') < 3) {
        $errors[] = 'Kullanıcı adı en az 3 karakter olmalıdır.';
    } elseif (mb_strlen($username, 'UTF-8') > 50) {
        $errors[] = 'Kullanıcı adı en fazla 50 karakter olabilir.';
    } elseif (!preg_match('/^[a-zA-Z0-9_]+$/', $username)) {
        $errors[] = 'Kullanıcı adı sadece harf, rakam ve alt çizgi içerebilir.';
    }
    
    // E-posta
    if (empty($email)) {
        $errors[] = 'E-posta adresi gereklidir.';
    } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $errors[] = 'Geçerli bir e-posta adresi girin.';
    }
    
    // Telefon (opsiyonel ama girilmişse kontrol et)
    if (!empty($phone)) {
        $cleanPhone = preg_replace('/[^0-9]/', '', $phone);
        if (strlen($cleanPhone) < 10 || strlen($cleanPhone) > 15) {
            $errors[] = 'Geçerli bir telefon numarası girin.';
        }
    }
    
    // Şifre
    if (empty($password)) {
        $errors[] = 'Şifre gereklidir.';
    } elseif (strlen($password) < 6) {
        $errors[] = 'Şifre en az 6 karakter olmalıdır.';
    } elseif (strlen($password) > 100) {
        $errors[] = 'Şifre en fazla 100 karakter olabilir.';
    }
    
    // Şifre tekrar
    if ($password !== $passwordConfirm) {
        $errors[] = 'Şifreler eşleşmiyor.';
    }
    
    // Kullanım koşulları
    if (!$terms) {
        $errors[] = 'Kullanım koşullarını kabul etmelisiniz.';
    }
    
    // Veritabanı kontrolleri
    if (empty($errors)) {
        try {
            // Kullanıcı adı kontrolü
            $stmt = $db->prepare("SELECT COUNT(*) FROM users WHERE username = ?");
            $stmt->execute([$username]);
            if ($stmt->fetchColumn() > 0) {
                $errors[] = 'Bu kullanıcı adı zaten kullanılıyor.';
            }
            
            // E-posta kontrolü
            $stmt = $db->prepare("SELECT COUNT(*) FROM users WHERE email = ?");
            $stmt->execute([$email]);
            if ($stmt->fetchColumn() > 0) {
                $errors[] = 'Bu e-posta adresi zaten kayıtlı.';
            }
            
        } catch (PDOException $e) {
            $errors[] = 'Bir hata oluştu. Lütfen tekrar deneyin.';
        }
    }
    
    // Kayıt işlemi
    if (empty($errors)) {
        try {
            $hashedPassword = password_hash($password, PASSWORD_DEFAULT);
            
            $stmt = $db->prepare("
                INSERT INTO users (username, email, password, full_name, phone, role, status, created_at) 
                VALUES (?, ?, ?, ?, ?, 'user', 'active', NOW())
            ");
            
            $stmt->execute([
                $username,
                $email,
                $hashedPassword,
                $fullName,
                $phone ?: null
            ]);
            
            $userId = $db->lastInsertId();
            
            // Otomatik giriş yap
            $_SESSION['user_id'] = $userId;
            $_SESSION['user_email'] = $email;
            $_SESSION['user_name'] = $fullName ?: $username;
            $_SESSION['user_role'] = 'user';
            
            setFlash('success', 'Hesabınız başarıyla oluşturuldu. Hoş geldiniz!');
            redirect(SITE_URL);
            exit;
            
        } catch (PDOException $e) {
            setFlash('error', 'Kayıt sırasında bir hata oluştu. Lütfen tekrar deneyin.');
            redirect(SITE_URL . '/kayit.php');
            exit;
        }
    } else {
        setFlash('error', implode('<br>', $errors));
        redirect(SITE_URL . '/kayit.php');
        exit;
    }
}

$pageTitle = 'Kayıt Ol';
require_once __DIR__ . '/header.php';
?>

<style>
.auth-section {
    min-height: calc(100vh - 80px);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px 20px;
    position: relative;
    overflow: hidden;
}

.auth-section::before {
    content: '';
    position: absolute;
    top: -50%;
    left: -50%;
    width: 200%;
    height: 200%;
    background: radial-gradient(circle at 30% 50%, rgba(var(--primary-rgb), 0.08) 0%, transparent 50%),
                radial-gradient(circle at 70% 80%, rgba(var(--secondary-rgb), 0.06) 0%, transparent 40%);
    animation: bgMove 20s ease-in-out infinite;
    z-index: -1;
}

@keyframes bgMove {
    0%, 100% { transform: translate(0, 0); }
    50% { transform: translate(-20px, -20px); }
}

.auth-container {
    width: 100%;
    max-width: 520px;
}

.auth-card {
    background: rgba(30, 41, 59, 0.8);
    backdrop-filter: blur(20px);
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 24px;
    padding: 45px 40px;
    box-shadow: 0 25px 80px rgba(0, 0, 0, 0.4);
    position: relative;
    overflow: hidden;
}

.auth-card::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: var(--gradient);
}

.auth-header {
    text-align: center;
    margin-bottom: 35px;
}

.auth-icon {
    width: 70px;
    height: 70px;
    background: var(--gradient);
    border-radius: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 28px;
    color: #fff;
    margin: 0 auto 20px;
    box-shadow: 0 10px 30px rgba(var(--primary-rgb), 0.4);
}

.auth-header h1 {
    font-size: 28px;
    font-weight: 800;
    margin-bottom: 8px;
    color: #fff;
}

.auth-header p {
    color: rgba(255, 255, 255, 0.6);
    font-size: 15px;
    margin: 0;
}

.form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 15px;
}

.form-group {
    margin-bottom: 20px;
}

.form-group.full-width {
    grid-column: 1 / -1;
}

.form-label {
    display: block;
    font-size: 14px;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.9);
    margin-bottom: 10px;
}

.form-label i {
    margin-right: 8px;
    color: var(--primary);
}

.form-label .required {
    color: #ef4444;
    margin-left: 3px;
}

.input-wrapper {
    position: relative;
}

.form-control {
    width: 100%;
    padding: 14px 18px;
    background: rgba(15, 23, 42, 0.6);
    border: 2px solid rgba(255, 255, 255, 0.08);
    border-radius: 12px;
    color: #fff;
    font-size: 15px;
    transition: all 0.3s ease;
}

.form-control:focus {
    outline: none;
    border-color: var(--primary);
    background: rgba(15, 23, 42, 0.8);
    box-shadow: 0 0 0 4px rgba(var(--primary-rgb), 0.15);
}

.form-control::placeholder {
    color: rgba(255, 255, 255, 0.35);
}

.input-wrapper .toggle-password {
    position: absolute;
    right: 14px;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    color: rgba(255, 255, 255, 0.4);
    cursor: pointer;
    padding: 5px;
    font-size: 16px;
    transition: color 0.3s;
}

.input-wrapper .toggle-password:hover {
    color: var(--primary);
}

.input-hint {
    font-size: 12px;
    color: rgba(255, 255, 255, 0.4);
    margin-top: 6px;
    display: flex;
    align-items: center;
    gap: 5px;
}

.input-hint i {
    font-size: 11px;
}

/* Password Strength */
.password-strength {
    margin-top: 10px;
}

.strength-bar {
    height: 4px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 2px;
    overflow: hidden;
    margin-bottom: 6px;
}

.strength-fill {
    height: 100%;
    width: 0%;
    border-radius: 2px;
    transition: all 0.3s;
}

.strength-fill.weak { width: 33%; background: #ef4444; }
.strength-fill.medium { width: 66%; background: #f59e0b; }
.strength-fill.strong { width: 100%; background: #10b981; }

.strength-text {
    font-size: 12px;
    color: rgba(255, 255, 255, 0.5);
}

.strength-text.weak { color: #ef4444; }
.strength-text.medium { color: #f59e0b; }
.strength-text.strong { color: #10b981; }

/* Terms */
.terms-check {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 25px;
    cursor: pointer;
}

.terms-check input[type="checkbox"] {
    width: 20px;
    height: 20px;
    accent-color: var(--primary);
    cursor: pointer;
    margin-top: 2px;
    flex-shrink: 0;
}

.terms-check span {
    font-size: 14px;
    color: rgba(255, 255, 255, 0.7);
    line-height: 1.5;
}

.terms-check a {
    color: var(--primary);
    font-weight: 500;
}

.terms-check a:hover {
    text-decoration: underline;
}

.btn-auth {
    width: 100%;
    padding: 18px 30px;
    background: var(--gradient);
    border: none;
    border-radius: 14px;
    color: #fff;
    font-size: 16px;
    font-weight: 700;
    cursor: pointer;
    transition: all 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    box-shadow: 0 10px 30px rgba(var(--primary-rgb), 0.4);
}

.btn-auth:hover {
    transform: translateY(-3px);
    box-shadow: 0 15px 40px rgba(var(--primary-rgb), 0.5);
}

.btn-auth:active {
    transform: translateY(-1px);
}

.btn-auth i {
    font-size: 18px;
}

.auth-divider {
    display: flex;
    align-items: center;
    margin: 30px 0;
    gap: 15px;
}

.auth-divider::before,
.auth-divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background: rgba(255, 255, 255, 0.1);
}

.auth-divider span {
    font-size: 13px;
    color: rgba(255, 255, 255, 0.4);
    text-transform: uppercase;
    letter-spacing: 1px;
}

.auth-footer {
    text-align: center;
}

.auth-footer p {
    color: rgba(255, 255, 255, 0.6);
    font-size: 15px;
    margin: 0;
}

.auth-footer a {
    color: var(--primary);
    font-weight: 600;
    margin-left: 5px;
    transition: all 0.3s;
}

.auth-footer a:hover {
    color: var(--secondary);
    text-decoration: underline;
}

.auth-features {
    display: flex;
    justify-content: center;
    gap: 25px;
    margin-top: 30px;
    padding-top: 25px;
    border-top: 1px solid rgba(255, 255, 255, 0.08);
    flex-wrap: wrap;
}

.auth-feature {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: rgba(255, 255, 255, 0.5);
}

.auth-feature i {
    color: var(--primary);
    font-size: 14px;
}

@media (max-width: 576px) {
    .auth-card {
        padding: 35px 25px;
    }
    
    .auth-header h1 {
        font-size: 24px;
    }
    
    .form-row {
        grid-template-columns: 1fr;
    }
    
    .auth-features {
        flex-direction: column;
        align-items: center;
        gap: 12px;
    }
}
</style>

<section class="auth-section">
    <div class="auth-container" data-aos="fade-up" data-aos-duration="800">
        <div class="auth-card">
            <div class="auth-header">
                <div class="auth-icon">
                    <i class="fas fa-user-plus"></i>
                </div>
                <h1>Hesap Oluştur</h1>
                <p>Hemen ücretsiz kayıt olun ve avantajlardan yararlanın</p>
            </div>
            
            <form method="POST" action="" id="registerForm">
                <input type="hidden" name="csrf_token" value="<?php echo $csrfToken; ?>">
                
                <div class="form-row">
                    <div class="form-group">
                        <label class="form-label">
                            <i class="fas fa-user"></i> Ad Soyad<span class="required">*</span>
                        </label>
                        <input type="text" name="full_name" class="form-control" 
                               placeholder="Adınız Soyadınız" required
                               value="<?php echo isset($_POST['full_name']) ? clean($_POST['full_name']) : ''; ?>">
                    </div>
                    
                    <div class="form-group">
                        <label class="form-label">
                            <i class="fas fa-at"></i> Kullanıcı Adı<span class="required">*</span>
                        </label>
                        <input type="text" name="username" class="form-control" 
                               placeholder="kullaniciadi" required pattern="[a-zA-Z0-9_]+"
                               value="<?php echo isset($_POST['username']) ? clean($_POST['username']) : ''; ?>">
                        <div class="input-hint">
                            <i class="fas fa-info-circle"></i>
                            Sadece harf, rakam ve alt çizgi
                        </div>
                    </div>
                </div>
                
                <div class="form-row">
                    <div class="form-group">
                        <label class="form-label">
                            <i class="fas fa-envelope"></i> E-posta<span class="required">*</span>
                        </label>
                        <input type="email" name="email" class="form-control" 
                               placeholder="ornek@email.com" required autocomplete="email"
                               value="<?php echo isset($_POST['email']) ? clean($_POST['email']) : ''; ?>">
                    </div>
                    
                    <div class="form-group">
                        <label class="form-label">
                            <i class="fas fa-phone"></i> Telefon
                        </label>
                        <input type="tel" name="phone" class="form-control" 
                               placeholder="05XX XXX XX XX"
                               value="<?php echo isset($_POST['phone']) ? clean($_POST['phone']) : ''; ?>">
                    </div>
                </div>
                
                <div class="form-row">
                    <div class="form-group">
                        <label class="form-label">
                            <i class="fas fa-lock"></i> Şifre<span class="required">*</span>
                        </label>
                        <div class="input-wrapper">
                            <input type="password" name="password" id="password" class="form-control" 
                                   placeholder="••••••••" required autocomplete="new-password" minlength="6">
                            <button type="button" class="toggle-password" onclick="togglePassword('password', 'toggleIcon1')">
                                <i class="fas fa-eye" id="toggleIcon1"></i>
                            </button>
                        </div>
                        <div class="password-strength" id="passwordStrength" style="display: none;">
                            <div class="strength-bar">
                                <div class="strength-fill" id="strengthFill"></div>
                            </div>
                            <span class="strength-text" id="strengthText"></span>
                        </div>
                    </div>
                    
                    <div class="form-group">
                        <label class="form-label">
                            <i class="fas fa-lock"></i> Şifre Tekrar<span class="required">*</span>
                        </label>
                        <div class="input-wrapper">
                            <input type="password" name="password_confirm" id="password_confirm" class="form-control" 
                                   placeholder="••••••••" required autocomplete="new-password" minlength="6">
                            <button type="button" class="toggle-password" onclick="togglePassword('password_confirm', 'toggleIcon2')">
                                <i class="fas fa-eye" id="toggleIcon2"></i>
                            </button>
                        </div>
                    </div>
                </div>
                
                <label class="terms-check">
                    <input type="checkbox" name="terms" required>
                    <span>
                        <a href="<?php echo SITE_URL; ?>/sayfa/kullanim-kosullari" target="_blank">Kullanım Koşulları</a>'nı ve 
                        <a href="<?php echo SITE_URL; ?>/sayfa/gizlilik-politikasi" target="_blank">Gizlilik Politikası</a>'nı 
                        okudum ve kabul ediyorum.
                    </span>
                </label>
                
                <button type="submit" class="btn-auth">
                    <i class="fas fa-user-plus"></i>
                    Kayıt Ol
                </button>
            </form>
            
            <div class="auth-divider">
                <span>veya</span>
            </div>
            
            <div class="auth-footer">
                <p>Zaten hesabınız var mı?<a href="<?php echo SITE_URL; ?>/giris.php">Giriş Yap</a></p>
            </div>
            
            <div class="auth-features">
                <div class="auth-feature">
                    <i class="fas fa-check-circle"></i>
                    <span>Ücretsiz Kayıt</span>
                </div>
                <div class="auth-feature">
                    <i class="fas fa-shield-alt"></i>
                    <span>Güvenli Alışveriş</span>
                </div>
                <div class="auth-feature">
                    <i class="fas fa-bolt"></i>
                    <span>Hızlı Teslimat</span>
                </div>
            </div>
        </div>
    </div>
</section>

<script>
// Şifre göster/gizle
function togglePassword(inputId, iconId) {
    var input = document.getElementById(inputId);
    var icon = document.getElementById(iconId);
    
    if (input.type === 'password') {
        input.type = 'text';
        icon.classList.remove('fa-eye');
        icon.classList.add('fa-eye-slash');
    } else {
        input.type = 'password';
        icon.classList.remove('fa-eye-slash');
        icon.classList.add('fa-eye');
    }
}

// Şifre güçlülük kontrolü
document.getElementById('password').addEventListener('input', function() {
    var password = this.value;
    var strengthDiv = document.getElementById('passwordStrength');
    var strengthFill = document.getElementById('strengthFill');
    var strengthText = document.getElementById('strengthText');
    
    if (password.length === 0) {
        strengthDiv.style.display = 'none';
        return;
    }
    
    strengthDiv.style.display = 'block';
    
    var strength = 0;
    
    // Uzunluk kontrolü
    if (password.length >= 6) strength++;
    if (password.length >= 10) strength++;
    
    // Karakter çeşitliliği
    if (/[a-z]/.test(password) && /[A-Z]/.test(password)) strength++;
    if (/[0-9]/.test(password)) strength++;
    if (/[^a-zA-Z0-9]/.test(password)) strength++;
    
    // Sonuç
    strengthFill.className = 'strength-fill';
    strengthText.className = 'strength-text';
    
    if (strength <= 2) {
        strengthFill.classList.add('weak');
        strengthText.classList.add('weak');
        strengthText.textContent = 'Zayıf şifre';
    } else if (strength <= 4) {
        strengthFill.classList.add('medium');
        strengthText.classList.add('medium');
        strengthText.textContent = 'Orta güçlükte şifre';
    } else {
        strengthFill.classList.add('strong');
        strengthText.classList.add('strong');
        strengthText.textContent = 'Güçlü şifre';
    }
});

// Şifre eşleşme kontrolü
document.getElementById('password_confirm').addEventListener('input', function() {
    var password = document.getElementById('password').value;
    var confirm = this.value;
    
    if (confirm.length > 0 && password !== confirm) {
        this.style.borderColor = '#ef4444';
    } else if (confirm.length > 0 && password === confirm) {
        this.style.borderColor = '#10b981';
    } else {
        this.style.borderColor = '';
    }
});

// Kullanıcı adı otomatik küçük harf
document.querySelector('input[name="username"]').addEventListener('input', function() {
    this.value = this.value.toLowerCase().replace(/[^a-z0-9_]/g, '');
});

// Form submit
document.getElementById('registerForm').addEventListener('submit', function(e) {
    var password = document.getElementById('password').value;
    var confirm = document.getElementById('password_confirm').value;
    
    if (password !== confirm) {
        e.preventDefault();
        alert('Şifreler eşleşmiyor!');
        return false;
    }
    
    var btn = this.querySelector('.btn-auth');
    btn.disabled = true;
    btn.innerHTML = '<i class="fas fa-spinner fa-spin"></i> Kayıt yapılıyor...';
});
</script>

<?php require_once __DIR__ . '/footer.php'; ?>