Evet, paylaştığınız PHP kodunda birden fazla hata ve eksiklik bulunuyor. Özellikle
"kayıt etmiyor" sorununuzun temel nedeni, veritabanı işlemlerinin (UPDATE) başarılı olup olmadığını doğru bir şekilde kontrol edip sayfayı yönlendirmemesinden kaynaklanıyor.
İşlemin başarısız olmasına yol açabilecek başlıca sorunları ve çözüm önerilerini aşağıda detaylı olarak bulabilirsiniz.
Genel Ayarlar Bölümündeki Hatalar
1. UPDATE Sorgusundaki Yazım Hatası
ort_sure_system parametresinin veritabanına kaydedilmesi sırasında bir yazım hatası yapılmış.
Mevcut Kod:
PHPort_sure_system=rt_sure_system,
Doğrusu: Burada rt_sure_system yerine, parametreyi PDO'ya bağlamak için

rt_sure_system kullanmalısınız.
PHPort_sure_system=

rt_sure_system,
Ayrıca, PDO bind işlemi sırasında da parametreyi eklemelisiniz:
PHP$update->execute(array( // ... diğer parametreler "ort_sure_system" => $ort_sure_system, // Bu satır eksik // ... diğer parametreler
));
2. Yanlış Yönlendirme (Redirection) Mantığı
Kayıt işleminin tamamlanıp tamamlanmadığına bakılmaksızın, kodunuz her zaman sayfayı yönlendirmeye çalışıyor. Bu durum, kullanıcının işlem sonucuna dair bir geri bildirim almasını engeller.
Mevcut Kod:
PHPheader("Location:".site_url("admin/settings/general"));
echo json_encode(["t"=>"error","m"=>$errorText,"s"=>$icon,"r"=>$ refe rrer,"time"=>1]);
if( $update ): header("Location:".site_url("admin/settings/general")); $error = 1; $errorText = "İşlem başarılı";
else: $errorText = "İşlem başarısız"; $error = 1;
endif;
Doğrusu: header("Location:...") komutundan sonra exit; kullanarak kodun çalışmasını durdurmalısınız. Ayrıca, json_encode ve header yönlendirme komutlarını aynı anda kullanmak mantıksal bir hatadır. header ile yönlendirme yapıldığında, JSON çıktısı kullanıcıya ulaşmaz.
Önerilen Düzeltme: Yönlendirme komutunu
sadece $update işlemi başarılı olduğunda çalıştırın.
PHP$update = $conn->prepare("...");
$update->execute([...]);
if( $update ): $errorText = "İşlem başarılı"; $_SESSION["client"]["data"]["successText"] = $errorText; // Kullanıcıya mesaj göstermek için header("Location:".site_url("admin/settings/general")); exit;
else: $errorText = "İşlem başarısız"; $icon = "error"; // İşlem başarısız olduğunda kullanıcıyı aynı sayfaya yönlendirin // veya hata mesajını session'a kaydedin. $_SESSION["client"]["data"]["errorText"] = $errorText; header("Location:".site_url("admin/settings/general")); exit;
endif;
Bu sayede, header komutu sadece işlemin sonucuna göre çalışır ve kodun akışı daha doğru olur.
Diğer Bölümlerdeki Hatalar ve Geliştirmeler
- Hata Mesajı Yönetimi: Kodunuzda $errorText değişkeni tanımlanıp daha sonra $error değişkeni 1'e eşitleniyor, ancak bu değerler genellikle sayfayı yeniden yükledikten sonra kaybolur. $error ve $errorText değerlerini $_SESSION'a kaydederek sayfalar arası kalıcılık sağlamak daha doğru bir yaklaşımdır.
- Gereksiz Kod: Birden fazla yerde header("Location:...") komutundan sonra echo json_encode(...) kullanılmış. Bu gereksizdir ve karışıklığa neden olur. İkisinden birini seçmelisiniz. Genellikle API'lar için json_encode, sayfa yönlendirmeleri için header kullanılır.
- Route Parametre Kontrolü: if( route(5) ) gibi kontroller birçok yerde tekrar ediyor. Bu kontrolleri daha düzenli bir hale getirerek kodun okunabilirliğini artırabilirsiniz.
Bu düzeltmeleri uyguladığınızda, \"kayıt etmiyor\" sorununuz büyük ihtimalle çözülecektir.