Untitled
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