Untitled
unknown
plain_text
a year ago
9.7 kB
5
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