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.
| Konu | Ayrıntı |
|---|---|
| Yönetim modülü | engine/inc/question.php |
| Panel adresi | admin.php?mod=question |
| Veritabanı tablosu | PREFIX_question |
| Paneldeki tanımı | "Spam koruması için sorular ve cevaplar" |
| Grup izinleri | news_question, comments_question, feedback_question, pm_question |
| Ön yüz bloğu | [question]…[/question] + {question} |
İşlem (action) değerleri
| action | Görevi |
|---|---|
addquestion | Yeni soru ekleme formunu açar ve kaydı işler |
editquestion | Var olan soruyu düzenleme formunu açar ve kaydı işler |
delete | Soruyu siler |
Soru tablosu: PREFIX_question
| Alan | Görevi |
|---|---|
id | Sorunun benzersiz kimliği |
question | Soru metni; 255 karakter sınırı vardır (varchar 255) |
answer | Kabul 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
Grup izinleri
Sistem, hangi formda devreye gireceğini üye grubu izinlerinden öğrenir. Bu izinler
_usergroups tablosunda tutulur ve grup ayarlarından yönetilir.
| İzin | Devreye girdiği form |
|---|---|
news_question | Haber ekleme |
comments_question | Yorum gönderme |
feedback_question | E-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şen | Gö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ışı
-
Modülü açın
admin.php?mod=questionadresine gidin. -
Soru metnini yazın
questionalanı 255 karakteri aşmamalıdır. - Doğru cevapları girin Her satıra bir kabul edilebilir cevap yazın.
-
Kaydedin
addquestionile soruyu veritabanına ekleyin. -
Grup iznini açın
İlgili gruba
*_questioniznini verin. - 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
| Hata | Sonuç |
|---|---|
| Boş veya anlamsız cevap listesi bırakmak | Kullanıcı doğrulamayı geçemez, form gönderilemez |
| Çok uzun soru metni yazmak | question alanı 255 karakterdir; fazlası kırpılır |
| Grup izni açıkken hiç soru tanımlamamak | Form doğrulanamaz; kullanıcı işlemi tamamlayamaz |
| Aktif bir soruyu form oturumu sürerken silmek | Mevcut form oturumları geçersiz olur |
| Yalnızca büyük/küçük harf farkıyla cevap yazmak | Beklenen cevap listesi eksik kalır; gerekli varyasyonları ekleyin |
Blok yerine yalnızca {question} koymak | Formun 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
*_questioniznini 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.