Domaca Forum scripta

Pozdrav svima.

Hteo bih da vam predstavim jedan novi projekat na kome radim. Radi se o forum skripti koja je trenutno u izradi. Veći deo posla je obavljen, a sada sledi samo dodavanje novih opcija.

Glavni cilj je izrada bulletin board skripte koja će imati dosta opcija, a malo zauzimati u smislu veličine fajlova (200kb, dok zip-ovan oko 100kb).

Neke opcije:
WYSIWYG lightweight editor (cilj je eliminisanje BBCode, ali je i on integrisan u skriptu).
Ajax API (trenutno radi samo provera korisničkog imena prilikom registracije).
Template sistem (.css i html - veoma jednostavan za editovanje)
Anti-Spam zaštita (captcha - registracija i postovanje gostiju)
Ostalo: Allow/dissallow smiles in post, bad word filter, topics per page, posts per page, different time formats…

Postoje i neke “sitne” opcije tipa koliko postova je potrebno da bi topic bio hot itd…

Test:

http://avs-demo.iz.rs/testforum

username: test , password: test

Napomena: forum je još u ranoj fazi izrade, a finalna verzija ne bi trebalo da zauzima više od 200 kb. Po tome će forum skripta biti specifična, nadam se.

Btw, još uvek nisam dao ime skripti. :slight_smile:

[SIZE=“1”]Nadam se da je ova tema na pravom mestu, pošto nisam mogao naći ni jedan drugi odgovarajući forum.[/size]

Pozdrav!
Prvo cestitam, malo tko danas ima vremena raditi opensource projekte! Dalje mi je zapelo za oko to sto se zelis ograniciti na 200kb, potpuno nepotrebno - pisi kod dok god imas ideja. :smiley:
i jos nesto jako vazno, skripta ti je vuln na SQL injection!

Odlicno izgleda, nadam se da ce zazivjet

[quote=“VirusQ3”]Pozdrav!
Prvo cestitam, malo tko danas ima vremena raditi opensource projekte! Dalje mi je zapelo za oko to sto se zelis ograniciti na 200kb, potpuno nepotrebno - pisi kod dok god imas ideja. :smiley:
i jos nesto jako vazno, skripta ti je vuln na SQL injection![/quote]
Hvala na odgovoru.
Kao što rekoh, skripta je u fazi izrade, a osnovna zaštita od SQL inject je postavljena svuda:
mysql_real_escape_string. Takodje magic quotes se ne koristi, naravno.

Ako si uočio neki propust, veoma bi korisno bilo da mi pošalješ PM :slight_smile: .

Što se tiče 200kb… ne postoji pravilo da se ograniči na 200kb, ali bazična ideja je da se napravi lightweight skripta koja ima osnovne i napredne funkcije. :slight_smile:

@hrvojesb
Hvala. Videćemo :slight_smile:

Više manje neisplativ projekt, osim ako je za vježbu, tih forum skripti ima na tisuće, pa nema potrebe raditi nove, osim ako je zavlastitu vježbu naravno :slight_smile: U svakom slučaju samo naprijed

Istina je da ima foruma koliko hoćete svugdje na webu ali nijedan kvalitetan open source domaći! Samo hrabro naprijed!

Samo tako nastavi,nešto iz domaće radinosti. btw možeš odma napraviti i hr. prijevod :slight_smile:

Realno, pogodio si. :slight_smile: U početku je projekat bio samo vežba, a onda sam lagano dodavao nove opcije.
Znam da ima dosta forum skripti, ali da li ima neka koja je domaće “proizvodnje” i da zauzima malo (i resursa)? Nisam siguran da ima, jedino što sam video je minibb.

@IvanPeso, baš zato se i radi ova skripta.

@bacardi

Uvek kada radim neki projekat, skriptu, ili bilo šta, prvo radim na eng. Prevod na druge jezike je jednostavan što se tiče ove skripte, pošto podržava multi-language (dodavanje/editovanje jednog jezičkog .php fajla)
:slight_smile:

[SIZE=“3”]Promenjen link[/size]

http://novibb.iz.rs

Skripta postavljena na google code:

http://code.google.com/p/brevisbb/

Opet je promenjen sajt (tj. naziv skripte):

http://brevisbb.iz.rs

Prethodni link još uvek radi.

Vrlo kvalitetna skripta. Svaka cast!

A po cemu si ti to zakljucio?

Meni ne izgleda nesto prekvalitetno, niti mi se stil programiranja svidja, niti su logike razdvojene, niti je sigurna, a sumnjam da je prebrza bez cache-a …

Zanimljivo. Nisam jedina budala koja je to radila. :smiley: Šala naravno. :slight_smile:

Moj forum je ipak malo bolji, dosta si fulao kad si odlučio upotrijebiti

element, morao si ići s layerima.

Bugova ima mali miljun bez da uopće gledam, to je 100% tako.

Što reći, svaka čast na trudu.

Samo da pitam, jesi riješio pročitane / nečitane postove userima? To sam se mučio uff…

PS: Škugore, kako bi ti napravio caching na forumu?

Ako bi vec doslo do problema sa performansama, ja bi prije isao na load balancing.

Na forumu se cesto dodaju novi postovi, tako da bi prvo trebao istraziti da li isplati raditi cache.

Na forumu se ne isplati dodavati caching jer bi još samo usporilo sve skupa. Em se dodaju postovi često (kao što si rekao), a glavni problem je pročitani/nepročitani postovi. Kad skužiš da gosti i regani useri moraju imati tu mogućnost, cache pada u vodu.

[quote=“ivan.skugor”]Ako bi vec doslo do problema sa performansama, ja bi prije isao na load balancing.

Na forumu se cesto dodaju novi postovi, tako da bi prvo trebao istraziti da li isplati raditi cache.[/quote]

Cache nije ni završen i koristio se samo na početnoj stranici.
Verujem da se neće pojaviti problem ako je saobraćaj “gust”, što pomalo zavisi i od webhostinga. Webhosting gde je skripta prikazuje zauzeće baze i procesora za svaki fajl pojedinačno i ne prelazi 5% (na istom koristim i phpbb3 koji ima relativno veće zauzeće CPU i baze od ove skripte).

Sigurno bi se javio problem kada bi za neku temu postojalo dosta pretplatnika (koji prate temu) i kada neko postavi novi post skripta šalje notification mailove svim korisnicima.

Kao što vidiš skripta je daleko od toga da je završena, ali ni jedno učitavanje ne zahteva više od 8-10 queries-a (realno od 3-5). jedino kada moderator briše postove ili teme postoji dosta queriesa koji sinhronizuju broj korisničkih postova, poslednju temu u kategoriji itd.

Namerno nisam koristio LEFT JOIN INNER JOIN (što ne znači da neću ispraviti). Da li si video jedan jedini queries od npr. SMF-a koji je napisana u 40 - 50 linije koda :). Pitanje je šta je bolja solucija, razdvojiti queriese ili ne. Jedna varijanta će zauzimati više procesorske snage, druga će opteretiti bazu…

Ubuduće ću ignorisati postove tipa “skripta nije nešto preterano kvalitetna” itd. bez argumentacije ili predloga. Pogotovo što sam skriptu okačio pre par sati. :slight_smile: Ne kažem da je skripta prekvalitetna ili tako nešto, ali uvek sam otvoren za predloge. Nadam se da je to razumljivo.

S druge strane nikada nisam radio ranije u .php, već u programskim jezicima c++ i delphy. Ovo je moj prvi projekat i uvek kada radim nešto radim temeljno.

@Gosaric

Trebao bih ga ponovno uploadati. Ugl. programiranje foruma je savršeno za prvi projekt ih PHP-a, vidim da ćeš daleko doći. :smiley:

Skripta je dosta doradjena, ubacene su neke class-e, nove funkcije…sada je kod pregledniji i logicniji i (rekao bih) dosta sigurniji. Mnoge “rupe” su zakrpljene, kao i “ranjivost” na sql inject zahvaljujući nekim korisnicima ovog foruma (kao i još nekim drugim korisnicima).
Ubačen je moderator CP, Ajax za pregled (preview) posta, još korisničkih opcija, kao i više opcija u admin CP-u i ispravljene su sve notice i warrning poruke kada se uključi error reporting.

Sada bih opciono ubacio jedan plugin - tj. kviz mod, što bi možda bilo kao jedna (manje/više) nova ideja za forume.

Kviz mod bi radio na sledeći način:
Admin foruma napravi novu kategoriju/forum koja će biti samo za kvizove i napravi novog korisnika - kviz bota koji bi postavljao pitanja. Pitanja takođe ubacuju preko adminCP-a i opciono preko Moderator CP. Korisnici će takođe moći dodavati pitanja sa tačnim odgovorom, koji će moderatori odobravati.

Sa front page strane korisnik kada klikne na temu sa kvizom, imaće (opciono) 30-60 sek. da odgovori (verovatno će php i javaskripta kontrolisati vreme). Ako korisnik osveži stranicu timer se ne resetuje već nastavlja dalje. Kada neki korisnik tačno odgovori na pitanje, bot automatski piše ime korisnika koji je tačno odgovorio na pitanje, ukratko njegovu kviz statistiku i postavlja novo pitanje. Postojaće opcija za kontrolu poena, npr. da li će se oduzimati poen svakom korisniku koji nije tačno odgovorio i koliko poena će se dodavati kada se tačno odgovori na pitanje.

Dakle, mislim da nije loša ideja za ovako nešto (može biti čak i edukaciono i zabavno).

Voleo bih jedino da mi neko da savet kako bi mogao da “zaštitim” kviz od “varanja”, tj da li da se pamti i korisnička IP adresa (kao i multi - accounts kako korisnik sa jednim accountom ne bi gledao pitanje, a sa drugim odgovarao kada nadje adekvatan odgovor).

Naravno, skripta će “pratiti” svakog korisnika kako ne bi mogao da pregleda pitanje više puta, i jedno registrovani korisnici će moći da pregledaju pitanja.

Postojaće i posebna strana koja će biti detaljna statistika korisnika koji su učestvovali u kvizu…

Nova adresa je
http://brevisbb.iz.rs

ovo za kvizove, da nisi previše na fejsu? xxD

Lol . Ma jok…odavno ne koristim facebook, tj. ugasio account pre nešto manje od godinu dana. :slight_smile: