Untitled

 avatar
unknown
plain_text
5 months ago
9.7 kB
3
Indexable
<?php include '../auth.php';?>

<?php
// ayarlar_islem.php
include 'db.php';

// Hata ve başarı mesajları için dizi
$errors = [];
$success = "";

// Form gönderildi mi?
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Form verilerini al ve temizle
    $site_adi = trim($_POST['site_adi'] ?? '');
    $site_aciklama = trim($_POST['site_aciklama'] ?? ''); // site_aciklama ekledi
    $email = trim($_POST['email'] ?? '');
    $telefon = trim($_POST['telefon'] ?? '');
    $whatsapp = trim($_POST['whatsapp'] ?? '');
    $adres = trim($_POST['adres'] ?? '');
    $facebook = trim($_POST['facebook'] ?? '');
    $twitter = trim($_POST['twitter'] ?? '');
    $instagram = trim($_POST['instagram'] ?? '');
    $randevu_secenegi = isset($_POST['randevu_secenegi']) && $_POST['randevu_secenegi'] === 'ücretli' ? 'ücretli' : 'ücretsiz';

    // FAQ verilerini al
    $faq_questions = $_POST['faq_question'] ?? [];
    $faq_answers = $_POST['faq_answer'] ?? [];

    // Gerekli alanların dolu olup olmadığını kontrol et
    if (empty($site_adi)) {
        $errors[] = "Site adı boş bırakılamaz.";
    }

    if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $errors[] = "Geçerli bir e-posta adresi girin.";
    }

    if (empty($telefon)) {
        $errors[] = "Telefon numarası boş bırakılamaz.";
    }

    if (empty($whatsapp)) {
        $errors[] = "Whatsapp numarası boş bırakılamaz.";
    }

    if (empty($adres)) {
        $errors[] = "Adres bilgisi boş bırakılamaz.";
    }

    // Sosyal Medya URL'lerini doğrula (isteğe bağlı)
    if (!empty($facebook) && !filter_var($facebook, FILTER_VALIDATE_URL)) {
        $errors[] = "Geçerli bir Facebook URL'si girin.";
    }

    if (!empty($twitter) && !filter_var($twitter, FILTER_VALIDATE_URL)) {
        $errors[] = "Geçerli bir Twitter URL'si girin.";
    }

    if (!empty($instagram) && !filter_var($instagram, FILTER_VALIDATE_URL)) {
        $errors[] = "Geçerli bir Instagram URL'si girin.";
    }

    // Logo dosyası yüklenmişse işleme
    if (isset($_FILES['logo']) && $_FILES['logo']['error'] !== UPLOAD_ERR_NO_FILE) {
        $file = $_FILES['logo'];

        // Dosya hatalarını kontrol et
        if ($file['error'] !== UPLOAD_ERR_OK) {
            $errors[] = "Dosya yüklenirken bir hata oluştu.";
        } else {
            // Dosya türünü kontrol et
            $allowedMimeTypes = ['image/jpeg', 'image/png', 'image/gif'];
            if (!in_array($file['type'], $allowedMimeTypes)) {
                $errors[] = "Geçersiz dosya türü. Sadece JPG, PNG ve GIF dosyalarına izin verilmektedir.";
            }

            // Dosya boyutunu kontrol et (örneğin, maksimum 2MB)
            if ($file['size'] > 2 * 1024 * 1024) {
                $errors[] = "Dosya boyutu 2MB'yi geçemez.";
            }

            // Dosya adı benzersiz yapmak için yeni bir ad oluştur
            $fileExt = pathinfo($file['name'], PATHINFO_EXTENSION);
            $newFileName = 'logo_' . time() . '.' . strtolower($fileExt);

            // Yükleme dizinini belirle
            $uploadDir = 'uploads/'; // Burayı değiştirin, eğer bu dizin zaten doğruysa gerek yok
            if (!is_dir($uploadDir)) {
                mkdir($uploadDir, 0755, true);
            }

            $destination = $uploadDir . $newFileName; // Dosya yolu burada oluşturuluyor

            // Dosyayı taşı
            if (empty($errors)) {
                if (!move_uploaded_file($file['tmp_name'], $destination)) {
                    $errors[] = "Dosya yüklenirken bir hata oluştu.";
                }
            }
        }
    }

    // Eğer hatalar yoksa veritabanına kaydet
    if (empty($errors)) {
        try {
            // Ayarların mevcut olup olmadığını kontrol et
            $stmt = $pdo->query("SELECT COUNT(*) FROM ayarlar");
            $count = $stmt->fetchColumn();

            if ($count > 0) {
                // Ayarları güncelle
                if (isset($destination)) {
                    // Eğer logo yüklenmişse, site_logo'u da güncelle
                    $updateStmt = $pdo->prepare("UPDATE ayarlar SET site_adi = :site_adi, site_aciklama = :site_aciklama, site_logo = :site_logo, email = :email, telefon = :telefon, whatsapp = :whatsapp, adres = :adres, facebook = :facebook, twitter = :twitter, instagram = :instagram, randevu_secenegi = :randevu_secenegi, updated_at = NOW() WHERE id = 1");
                    $updateStmt->execute([
                        ':site_adi' => $site_adi,
                        ':site_aciklama' => $site_aciklama,
                        ':site_logo' => $destination,
                        ':email' => $email,
                        ':telefon' => $telefon,
                        ':whatsapp' => $whatsapp,
                        ':adres' => $adres,
                        ':facebook' => $facebook,
                        ':twitter' => $twitter,
                        ':instagram' => $instagram,
                        ':randevu_secenegi' => $randevu_secenegi
                    ]);
                } else {
                    // Logo yüklenmemişse, mevcut site_logo'u koru
                    $updateStmt = $pdo->prepare("UPDATE ayarlar SET site_adi = :site_adi, site_aciklama = :site_aciklama, email = :email, telefon = :telefon, whatsapp = :whatsapp, adres = :adres, facebook = :facebook, twitter = :twitter, instagram = :instagram, randevu_secenegi = :randevu_secenegi, updated_at = NOW() WHERE id = 1");
                    $updateStmt->execute([
                        ':site_adi' => $site_adi,
                        ':site_aciklama' => $site_aciklama,
                        ':email' => $email,
                        ':telefon' => $telefon,
                        ':whatsapp' => $whatsapp,
                        ':adres' => $adres,
                        ':facebook' => $facebook,
                        ':twitter' => $twitter,
                        ':instagram' => $instagram,
                        ':randevu_secenegi' => $randevu_secenegi
                    ]);
                }

                // FAQ İşlemleri
                // Mevcut tüm FAQ'ları sil ve yenilerini ekle
                $deleteFaqStmt = $pdo->prepare("DELETE FROM faq");
                $deleteFaqStmt->execute();

                // Yeni FAQ'ları ekle
                if (!empty($faq_questions) && is_array($faq_questions)) {
                    $insertFaqStmt = $pdo->prepare("INSERT INTO faq (question, answer) VALUES (:question, :answer)");
                    foreach ($faq_questions as $index => $question) {
                        $answer = $faq_answers[$index] ?? '';
                        if (!empty(trim($question)) && !empty(trim($answer))) {
                            $insertFaqStmt->execute([
                                ':question' => trim($question),
                                ':answer' => trim($answer)
                            ]);
                        }
                    }
                }

                $success = "Ayarlar ve FAQ'lar başarıyla güncellendi.";
            } else {
                // Ayarlar henüz eklenmemişse, yeni kayıt oluştur
                $insertStmt = $pdo->prepare("INSERT INTO ayarlar (site_adi, site_aciklama, site_logo, email, telefon, whatsapp, adres, facebook, twitter, instagram, randevu_secenegi, created_at, updated_at) VALUES (:site_adi, :site_aciklama, :site_logo, :email, :telefon, :whatsapp, :adres, :facebook, :twitter, :instagram, :randevu_secenegi, NOW(), NOW())");
                $insertStmt->execute([
                    ':site_adi' => $site_adi,
                    ':site_aciklama' => $site_aciklama,
                    ':site_logo' => isset($destination) ? $destination : null,
                    ':email' => $email,
                    ':telefon' => $telefon,
                    ':whatsapp' => $whatsapp,
                    ':adres' => $adres,
                    ':facebook' => $facebook,
                    ':twitter' => $twitter,
                    ':instagram' => $instagram,
                    ':randevu_secenegi' => $randevu_secenegi
                ]);

                // FAQ İşlemleri
                if (!empty($faq_questions) && is_array($faq_questions)) {
                    $insertFaqStmt = $pdo->prepare("INSERT INTO faq (question, answer) VALUES (:question, :answer)");
                    foreach ($faq_questions as $index => $question) {
                        $answer = $faq_answers[$index] ?? '';
                        if (!empty(trim($question)) && !empty(trim($answer))) {
                            $insertFaqStmt->execute([
                                ':question' => trim($question),
                                ':answer' => trim($answer)
                            ]);
                        }
                    }
                }

                $success = "Ayarlar ve FAQ'lar başarıyla eklendi.";
            }

            $_SESSION['success'] = $success;
            header("Location: ayarlar.php");
            exit();
        } catch (PDOException $e) {
            $errors[] = "Veritabanına kaydedilirken bir hata oluştu: " . htmlspecialchars($e->getMessage());
        }
    }

    // Hata varsa, oturuma ekle ve yönlendir
    if (!empty($errors)) {
        $_SESSION['errors'] = $errors;
        header("Location: ayarlar.php");
        exit();
    }
} else {
    // Doğrudan erişim engelle
    header("Location: ayarlar.php");
    exit();
}
?>
Editor is loading...
Leave a Comment