Soru-Cevap Sistemi

Soru-cevap sistemi, siteye kayıt, yorum, haber gönderimi ve özel mesaj gibi formlara ek bir doğrulama katmanı ekler. Ziyaretçiye birden çok doğru cevabı olan bir soru gösterilir; cevaplardan biri girilirse işlem geçer. Bu, otomatik gönderimlere (spam) karşı captcha ile birlikte kullanılan hafif bir korumadır.

KonuAyrıntı
Yönetim modülüengine/inc/question.php
Panel adresiadmin.php?mod=question
Veritabanı tablosuPREFIX_question
Paneldeki tanımı"Spam koruması için sorular ve cevaplar"
Grup izinlerinews_question, comments_question, feedback_question, pm_question
Ön yüz bloğu[question]…[/question] + {question}

İşlem (action) değerleri

actionGörevi
addquestionYeni soru ekleme formunu açar ve kaydı işler
editquestionVar olan soruyu düzenleme formunu açar ve kaydı işler
deleteSoruyu siler

Soru tablosu: PREFIX_question

AlanGörevi
idSorunun benzersiz kimliği
questionSoru metni; 255 karakter sınırı vardır (varchar 255)
answerKabul edilen doğru cevapların listesi (metin)

Doğru cevaplar: answer alanı kuralı

En kritik nokta burasıdır: answer alanına her satıra bir doğru cevap yazılır. Kullanıcı bu satırlardan herhangi birini girdiğinde cevap doğru sayılır. Yani tek soruya birden çok kabul edilebilir yanıt tanımlayabilirsiniz.

Ankara
ankara
ANKARA
!
Cevap listesini boş bırakmayın Soruya hiç doğru cevap tanımlanmazsa hiçbir kullanıcı doğrulamayı geçemez; ilgili form kalıcı olarak gönderilemez hâle gelir. Her soruya en az bir anlamlı cevap yazın.

Grup izinleri

Sistem, hangi formda devreye gireceğini üye grubu izinlerinden öğrenir. Bu izinler _usergroups tablosunda tutulur ve grup ayarlarından yönetilir.

İzinDevreye girdiği form
news_questionHaber ekleme
comments_questionYorum gönderme
feedback_questionE-posta (geri bildirim) formu
pm_questionÖzel mesaj gönderme

İzin, captcha ile birlikte de kullanılabilir. Her modül (yorum, haber, e-posta, özel mesaj) kendi doğrulama bloğunu ilgili formun içine basar.

Ön yüzde kullanım

İlgili form şablonuna [question]…[/question] bloğu ve içine {question} etiketi yerleştirilir. Blok, yalnızca grup izni açıkken ve soru tanımlıyken basılır.

[question]
    <label for="question_answer">{question}</label>
    <input type="text" name="question_answer" id="question_answer">
[/question]
BileşenGörevi
[question]…[/question]Doğrulama bloğu; koşullar uymazsa içeriğiyle silinir
{question}Seçilen sorunun metnini basar
Yanıt alanıKullanıcının cevabı girdiği metin alanı

Soru seçimi

Soru her istekte rastgele seçilir (ORDER BY RAND()). Bu nedenle aynı ziyaretçi farklı formlarda farklı sorularla karşılaşabilir; bu davranış beklenen bir durumdur, hata değildir.

Soru tanımlama akışı

  1. Modülü açın admin.php?mod=question adresine gidin.
  2. Soru metnini yazın question alanı 255 karakteri aşmamalıdır.
  3. Doğru cevapları girin Her satıra bir kabul edilebilir cevap yazın.
  4. Kaydedin addquestion ile soruyu veritabanına ekleyin.
  5. Grup iznini açın İlgili gruba *_question iznini verin.
  6. Formu sınayın İlgili formda bloğun çizildiğini ve doğru cevapla geçildiğini doğrulayın.

Sık yapılan hatalar

HataSonuç
Boş veya anlamsız cevap listesi bırakmakKullanıcı doğrulamayı geçemez, form gönderilemez
Çok uzun soru metni yazmakquestion alanı 255 karakterdir; fazlası kırpılır
Grup izni açıkken hiç soru tanımlamamakForm doğrulanamaz; kullanıcı işlemi tamamlayamaz
Aktif bir soruyu form oturumu sürerken silmekMevcut form oturumları geçersiz olur
Yalnızca büyük/küçük harf farkıyla cevap yazmakBeklenen cevap listesi eksik kalır; gerekli varyasyonları ekleyin
Blok yerine yalnızca {question} koymakFormun gönderilmesini sağlayan yanıt alanı eksik kalır

Kontrol listesi

  • Her soruya en az bir anlamlı doğru cevap yazdım.
  • Soru metni 255 karakteri aşmıyor.
  • İlgili gruba doğru *_question iznini verdim.
  • Form şablonunda [question]…[/question] bloğunda bir yanıt alanı var.
  • Doğru ve yanlış cevapla formu test ettim.
  • Soruyu silmenin açık form oturumlarını etkilediğini biliyorum.