Files
semih 494781e84f Dersler ve Temeller; web örnekleri PORT ortam değişkenini okur
- dersler/: 29 kısa ders (açıklama, çalıştırılabilir örnek, alıştırma). Her örneğin
  ve alıştırma çözümünün çıktısı Online IDE'nin hazırlık adımında gerçekten koşulup
  dosyadakiyle karşılaştırılır; biçim dersler/BICIM.md.
- temeller/: tek konulu 12 başlangıç programı.
- web/anket, web/kisalt, web/pano: port PORT ortam değişkeninden okunur (Online IDE
  önizlemesi 8080 verir), yoksa eski sabit port.
- README: öğrenme bölümü, Online IDE bağlantısı.
2026-10-17 22:07:47 +03:00
..

Anket — canlı oylama

Anket

Tek soruluk canlı anket. Oylar SQLite'ta tutulur, aynı adresten ikinci oy veritabanı kısıtıyla engellenir, sonuç grafiği her istekte sunucuda KabaLang ile SVG olarak çizilir.

kabalang calistir web/anket/anket.kbl
# → http://127.0.0.1:8473

Neyi gösteriyor

Konu Nerede
yapi Secenek + tipli alanlar, yapı listesi döndüren fonksiyon (-> liste<Secenek>) secenekler
Gövdesiz form: oy kimliği yolda (POST /oy/{id}) oy_ver
POST → 303 → GET deseni (sayfa yenilenince oy tekrar gitmez) oy_ver
Aynı grafiği iki genişlikte üretmek (masaüstü / telefon) grafik_svg(liste, isaretli, gen)
Doğru içerik tipiyle tek başına SVG: .tip("image/svg+xml") /sonuc.svg
JSON'u SQLite'ın json_object işlevine kurdurmak /api/sonuclar

Oy ekranı

Güvenlik

  • SQL enjeksiyonu: seçenek kimliği ve istemci adresi sorguya ? ile bağlanır. /oy/1 OR 1=1 var olmayan bir seçenektir → 404.
  • Çift oy: oy.adres sütunu UNIQUE; denetim ile kayıt tek iş parçacıklı sunucuda sırayla koşar, yarış koşulu yoktur.
  • Sunucu yalnız 127.0.0.1'i dinler. (Yerelde her istemci aynı adres olduğu için tarayıcı bir kez oy verebilir — anketi sıfırlamak için anket.db'yi silin.)

Veritabanı yolu ANKET_DB ile değiştirilebilir (varsayılan anket.db).