Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

4 Stron V   1 2 3 > »   
Reply to this topicStart new topic
> ShoutBox (mini chat), [klasa] php5
nospor
post 26.08.2006, 11:19:55
Post #1





Grupa: Moderatorzy
Postów: 34 111
Pomógł: 5652
Dołączył: 27.12.2004




info (demo na stronie)
pobierz

Prezentuje Wam moją nową klasę ShoutBox. Jak nazwa wskazuje jest to ShoutBox smile.gif
Zadaniem klasy jest zarządzanie dodawaniem jak i pobieraniem wiadomości. Wiadomości zapisywane są w bazie MySql. W paczce załączony jest sql do wygenerowania tabeli.
Mozna określić ile na początek należy zaladować wiadomości (gdy wchodzimy pierwszy raz na strone), limit pobrania wiadomości (by nikt nie pobral nam calej tabeli). Możemy sami określic jak chcemy by formatowany był czas, nick, wiadomość. Wystarczy tylko zaimlementować interfejs ShoutBoxFormatter, ktory zostal stworzony na tę okoliczność. Oczywiscie klasa dostarczą domyslną implementację.
Klasa generuje xml z wiadomościami. Dodatkowo każda wiadomość zawiera informację, kto ją napisal:
- administrator
- uzytkownik, ktory ją teraz czyta
- kazdy inny uzytkownik
Dzieki tej informacji można w inny sposob wyswietlic wiadomość.

Do klasy można zapodać ID ostatnio czytanej wiadomości, dzięki czemu klasa będzie biegla do bazy tylko wtedy, gdy pojawią sie nowe wiadomości.
Można zapodać wlasną funkcję lączącą sie z bazą, dzieki temu połączenie do bazy bedzie nawiązywane tylko wtedy gdy to konieczne.

Administrator może dodawać wlasne wiadomości w przypadku roznych okoliczności.

Do wersji 1.0 planuje dorobic cache'owanie wiadomości, zapamietywanie stanu sesji uzytkownika (nawet jak odswierzy strone, to dostanie wszystkie wiadomosci co czytal od poczatku) no i oczywiscie wasze uwagi.

Klasa nie udostępnia wlasnego logowania. Można ją bez problemu podlączyc do wlasnego systemu i przekazac klasie dane uzytkownika.

W paczce znajduje się przykladowy skrypt korzystający z klasy. Zawiera on banalne logowanie, w ktorym nalezy zapodać nick, haslo i kolor.
Jesli podamy nick blocked, uzytkownik ten nie bedzie mogl pisac wiadomosci. Przy probie wyslania wiadomosci, otrzyma komunikat od admina.

Zapraszam do korzystania, testowania i zglaszania uwag smile.gif


ps2: podziękowania dla mike_mech za CSS smile.gif

edit:
Skrypt, ktory korzysta z klasy to tylko przyklad, by zademonstrować jak uzywać tej klasy. Pisany byl na szybko by moc pokazac cos w praktyce. Takze system logowania, zapisywanie błędow jak widać nie należą do najbardziej rozbudowanych smile.gif
Prosze więc komentarze wstylu: ze jest wyjatek a potem trigger se darowac, bo to jest kod poza klasą (zresztą juz nie ma bo usunalem, by nie drażnić co poniektorych)

edit 2007-01-18
No i jest wersja 0.8.
Z ważniejszych nowości:
- Możliwość podpiecia drugiej tabeli, z której bedziemy czerpac dodatkowe dane. Jest to przydatne dla nowosci opisanej ponizej.
- Każdy użytkownik może określić wygląd swojej wiadomości (o ile mu na to pozwolimy winksmiley.jpg ). W przykladzie, co jest zalączony do klasy, kazdy uzytkownik może określić kolor swojego nicka. Skrypt na chwile obecna ma zaimplementowane ustawianie dla danej wiadomosci klas: diva wiadomosci, czasu, nicka, textu oraz styli dla: diva wiadomosci, czasu, nicka, tekstu.
- Moderacja wiadomości (edycja, usuwanie). Do tego celu wprowadzilem kolejny sterownik. Mozna okreslic globalnego moderatora lub tez moderatora na konkretne wiadomości (np. uzytkownik może moderowac tylko swoje wiadomości). Kasowanie odbywa sie poprzez wcisniecie ikonki usuwania. Aby edytowac należy kliknąc na tekscie wiadomości i.... sami zobaczycie.
- Po ostatnich postach uzytkownika, co mial ID usera jako tekst, wprowadzilem ulatwienie na te okolicznosc.
- inne drobne poprawki

Edit 2007-03-26
Wersja 1.0. Nowości:
przeglądanie historii (w przykładzie zwykli userzy mają ograniczone przegladanie. Ja moge całą przegladac. Oczywiscie jest to konfigurowalne)
- blokada scrolla - gdy cos czytamy a ktos cos napisze to nam juz sie to nie przesuwa do nowej wiadomosci
- poprawiony antyflooding
- komendy. wpiszcie sobie, np. /help i cos sie stanie . Oczywiscie kazdy bedzie mogl tworzyc swoje wlasne komendy.
- uzytkownicy online. Mozecie podpiąc swoj wlasny mechanizm online, lub korzystac z mojego banalnego co dołączylem do przykladu
- skrypt js napisalem teraz jako klasa
- możliwość skakania po użytkownikach online przy użyciu tabulatora. Wpiszcie pierwsze litery nicka, wciśnijcie tabulator i skrypt sam wam znajdzie usera. Możecie też nic nie wpisywać, wowczas skakać będziecie po wszystkich userach.

edit 2007-06-14
Wersja 1.1 wprowadza interfejs baz danych, umożliwiający przechowywanie danych gdziekolwiek.

edit 2008-06-16
wersja 1.2 http://nospor.pl/shoutbox-1.2-n30.html

Poprawienie obsługi komend
Kompresja gzip
Automatyczne czyszczenie starych wiadomości
Zmiana metod formatujących
Logowanie IP


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
dr_bonzo
post 26.08.2006, 13:04:42
Post #2





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Zaczne od wad (moze dojde do zalet tongue.gif):

*
  1. CREATE TABLE ........
  2. CHARSET=latin1


a ogonki?

*
  1. <?php
  2. catch (ShoutBoxException $ex){
  3. trigger_error($ex->getMessage(), E_USER_WARNING);
  4. }
  5. ?>


troche sie zalamalem, skoro uzywasz wyjatkow to po co je konwertowac do Errorow i logowac? nie prosciej uzyc bezposrednio loggera?


* nie dziala mi biggrin.gif skonfigurowalem baze ale sypie sie JS i nic sie nie wyswietla (poza szsablonem shoutboxa), nie chce mi sie smile.gif


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
sf
post 26.08.2006, 13:10:48
Post #3





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

Ostrzeżenie: (0%)
-----


Nie wiem czemu, ale czasem wiadomość, którą wpisze pojawia się dwa razy tongue.gif


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
nospor
post 26.08.2006, 13:11:46
Post #4





Grupa: Moderatorzy
Postów: 34 111
Pomógł: 5652
Dołączył: 27.12.2004




Cytat
a ogonki?
Wejdź na moj shoutbox online a zobaczysz ze są tongue.gif

Cytat
troche sie zalamalem, skoro uzywasz wyjatkow to po co je konwertowac do Errorow i logowac? nie prosciej uzyc bezposrednio loggera?

Ale ten kawalek kodu jest poza klasą. W tym przykladzie logowanie jest zrobione tylko poto, by zonaczyc ewnetnualne NOTICY czy WARNINGI. Zapiuje do logu w handlerze, wiec jesli przechwyce jakis EXCEPTION, to i w handlerze chcialem go zapisac. Ale to byl tylko PRZYKLAD i lenistwo. Nie chcialo mi sie logowania w przykladzie dopieszczac, skoro i tak jesli ktos tego uzyje na powaznie to bedzie mial wlasne.

Cytat
ie dziala mi skonfigurowalem baze ale sypie sie JS i nic sie nie wyswietla (poza szsablonem shoutboxa), nie chce mi sie
Byc moze źle skonfigurowales smile.gif
Js sie sypie, jak nie dostanie poprawnych danych. Widac masz problem przy przesylaniu danych. Moze sie ze skryptem nie laczysz, moze z baza. Nie wiem, podales "za duzo" informacji winksmiley.jpg

Cytat
Nie wiem czemu, ale czasem wiadomość, którą wpisze pojawia się dwa razy

Tak wiem, zdarza sie. Ale to tylko widzi dwa razy ten kto pisze. W bazie jest jeden wpis. Po prostu czasami zdarza sie, ze ktos zacznie pisac w tym samym czasie, co skrypt bedzie pobieral dane,wiec sie ID nie zdazy odswierzyc. Popatrze jeszcze pod tym kątem na to.


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
dr_bonzo
post 26.08.2006, 13:48:03
Post #5





Grupa: Przyjaciele php.pl
Postów: 5 724
Pomógł: 259
Dołączył: 13.04.2004
Skąd: N/A

Ostrzeżenie: (0%)
-----


Cytat
Byc moze źle skonfigurowales
Js sie sypie, jak nie dostanie poprawnych danych. Widac masz problem przy przesylaniu danych. Moze sie ze skryptem nie laczysz, moze z baza. Nie wiem, podales "za duzo" informacji

Dlatego napisalem "nie chce mi sie" smile.gif

Wyjatki
Cytat
Ale to byl tylko PRZYKLAD i lenistwo

Juz rozumiem

Cytat
Wejdź na moj shoutbox online a zobaczysz ze są

Bardzo smieszne smile.gif az linka zaczalem szukac, moze pozniej skonfiguruje u siebie smile.gif

Jestem slepy, link jest



Poprawione, skonfigurowane, dziala


--------------------
Nie lubię jednorożców.
Go to the top of the page
+Quote Post
nospor
post 26.08.2006, 16:30:21
Post #6





Grupa: Moderatorzy
Postów: 34 111
Pomógł: 5652
Dołączył: 27.12.2004




Ok, jest nowa wersja 0.7.5
Poprawki:
- zlikwidowane podwojny wpisy przy dodawaniu wiadomosci. Podobna jeszcze komus sie to zdarzylo, ale osobiscie nie moglem juz tego powtorzyc
- poprawa utraty wiadomosci, przy duzych czasach odswierzania

edit:
ver. 0.7.6 - wprowadzenie antyfloodu


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mike
post 28.08.2006, 12:04:25
Post #7





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Jupi!!!

Zostałem wymieniony w napisach kńcowych biggrin.gif

A na poważnie to przydałoby się jeszcze scrolowanie okna jeśli pojawiła się odpowiedź a ty przeglądasz na górze coś.
I skracanie wpisów lub jakieś dzielenie długich wyrazów, bo pojawia się scroll.
Go to the top of the page
+Quote Post
nospor
post 28.08.2006, 12:21:00
Post #8





Grupa: Moderatorzy
Postów: 34 111
Pomógł: 5652
Dołączył: 27.12.2004




Cytat
A na poważnie to przydałoby się jeszcze scrolowanie okna jeśli pojawiła się odpowiedź a ty przeglądasz na górze coś

Teraz jak przegladasz na gorze i sie cos pojawi, to poleci scroll na to co sie pojawilo. Ma tego nie byc? jak to widzisz?

Cytat
I skracanie wpisów lub jakieś dzielenie długich wyrazów, bo pojawia się scroll.
Eee, no fajnie teraz wyglada. Dla dlugiej jednowyrazowej wiadomosci jest tylko scroll smile.gif
Ale to chyba moze css by poprawic, ktory zreszta sam napisales winksmiley.jpg


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
mike
post 28.08.2006, 12:23:21
Post #9





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

Ostrzeżenie: (0%)
-----


Cytat(nospor @ 28.08.2006, 13:21 ) *
Teraz jak przegladasz na gorze i sie cos pojawi, to poleci scroll na to co sie pojawilo. Ma tego nie byc? jak to widzisz?
A to jak jest to spoko smile.gif Myślałem, że nie ma :/

Cytat(nospor @ 28.08.2006, 13:21 ) *
Eee, no fajnie teraz wyglada. Dla dlugiej jednowyrazowej wiadomosci jest tylko scroll smile.gif
Ale to chyba moze css by poprawic, ktory zreszta sam napisales winksmiley.jpg
Cos pomyślę, choć w sumie fatycznie nie jest źle. Robi się box tyldko dla pojedynczej wypowiedzi, więc w sumie jest OK.
Go to the top of the page
+Quote Post
nasty
post 28.08.2006, 18:40:00
Post #10





Grupa: Zarejestrowani
Postów: 634
Pomógł: 14
Dołączył: 27.05.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


a ja mam uwage, napisalem to na shoutboxi-e online winksmiley.jpg
jak wpisujes " \n " to ci pokazuje tylko n czy cos takiego, czyli problemy ze slashowaniem podobnie jak tu na forum, i bym bardzo radzil htmlspecialcharsowac zamiast slashowac. I to by bylo na tyle.

Ten post edytował nasty_psycho 28.08.2006, 18:40:26
Go to the top of the page
+Quote Post
nospor
post 28.08.2006, 19:45:59
Post #11





Grupa: Moderatorzy
Postów: 34 111
Pomógł: 5652
Dołączył: 27.12.2004




Cytat
bym bardzo radzil htmlspecialcharsowac zamiast slashowac

NO i musze cie rozczarowac, gdyż nigdzie nie slashuje, tylko uzywam wlasnie htmlspecialchars.

No i tu jest wlasnie problem w tej metodzie, gdyż ona " \n " wali jako enter.... hmmm, musze popatrzec blizej

edit: dobra, zamieniam ręcznie \ na encje. htmlspecialchars tego nie robi.
dzieki nasty_psycho za cynk, nawet pomimo iż blędnie oceniles kod smile.gif
moze jeszcze dzis uda mi sie wystawic nową wersje. bedą emoty dla "dzieci"


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
NetJaro
post 28.08.2006, 21:03:55
Post #12





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


@nospor, dobra robota :-) Znowu :-P Jakbyś dodał do tego AJAX by było znakomicie smile.gif
Go to the top of the page
+Quote Post
nospor
post 28.08.2006, 21:51:31
Post #13





Grupa: Moderatorzy
Postów: 34 111
Pomógł: 5652
Dołączył: 27.12.2004




Cytat
Jakbyś dodał do tego AJAX by było znakomicie
Albo ja ciebie nie rozumiem, albo ty dziś pileś winksmiley.jpg
Przecież cały skrypt jest oparty na tym, iz co x sekund wysylane jest żądanie na serwer wlasnie poprzez AJAX. Do obslugi AJAX wykorzystuje klasę advAjAX.
Oco ci więc chodzi? smile.gif

edit:
0.7.7:
- w przykladzie są buźki (nędzne bo nędzne, ale są)
- poprawilem błąd przy przekazywaniu zformatowych danych w xml
- przenioslem domyślny formatter poza klasę. wkoncu to przyklad, a nie częśc skladowa


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
NetJaro
post 28.08.2006, 22:03:25
Post #14





Grupa: Zarejestrowani
Postów: 475
Pomógł: 0
Dołączył: 1.04.2005
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Ale gafa, koniec ide odpocząć od wakacji tongue.gif

Dobranoc tongue.gif

Sorry za problemy :-)
Go to the top of the page
+Quote Post
Cypherq
post 28.08.2006, 22:13:02
Post #15





Grupa: Zarejestrowani
Postów: 181
Pomógł: 9
Dołączył: 28.08.2006
Skąd: Katowice

Ostrzeżenie: (0%)
-----


A opcjonalny scroll_lock jest w planach? Bo czasami w czasie intensywnej rozmowy ciężko będzie przeglądać wcześniejsze wpisy.


--------------------
"Zero 'errorów' nic nie oznacza. Walidator sprawdza tylko składnię. Kod strony jest jak psu z d**y wyjęty i to, że walidator świeci się na zielono nie oznacza, że ta kupa jest ładna" - mike
Go to the top of the page
+Quote Post
nospor
post 28.08.2006, 22:20:08
Post #16





Grupa: Moderatorzy
Postów: 34 111
Pomógł: 5652
Dołączył: 27.12.2004




scroll_lock niejako jest poza klasą, gdyż jego obsluge zalatwia js.
Aczkolwiek pomysl jest nawet sluszny i zapewnę w wolnej chwili dorobię i tę opcję dla przykładu.


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
nasty
post 29.08.2006, 18:18:27
Post #17





Grupa: Zarejestrowani
Postów: 634
Pomógł: 14
Dołączył: 27.05.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Cytat
dzieki nasty_psycho za cynk, nawet pomimo iż blędnie oceniles kod
Prosze, a kodu nie przegladalem, tylko tak mi sie zdalo jak zobaczylem demo online
Go to the top of the page
+Quote Post
son
post 3.09.2006, 10:05:20
Post #18





Grupa: Zarejestrowani
Postów: 210
Pomógł: 0
Dołączył: 31.01.2004
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Miałem pisać identyczną klasę! Dzięki nospor, że byłeś szybszy winksmiley.jpg
Robota jest naprawdę wykonana tak jak należy. Zdążyłem już zainstalować ten ShouBox na mojej strone i praktycznie nic nie musiałem zmieniać biggrin.gif (dla ciekawskich: http://www.e-kartki.org/Ekartki/Shout)
Dzięki

Ten post edytował son 3.09.2006, 10:05:58


--------------------
Warsztat: Apache 1.3.36 | MySQL 4.1.19 | php 5.1.4 | OS Linux SUSE 10.3 x86_64 | Kernel 2.6.22.12-0.1 | Opera 9.5 | Kate
Na warsztacie: Ekartki
Go to the top of the page
+Quote Post
nasty
post 3.09.2006, 12:51:35
Post #19





Grupa: Zarejestrowani
Postów: 634
Pomógł: 14
Dołączył: 27.05.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


~son: prosto z twojej strony winksmiley.jpg :
Cytat
Warning: Invalid argument supplied for foreach() in /home/ekartki/public_html/libs/SmartyML.php on line 245

Warning: Invalid argument supplied for foreach() in /home/ekartki/public_html/libs/SmartyML.php on line 245

Warning: Invalid argument supplied for foreach() in /home/ekartki/public_html/libs/SmartyML.php on line 245

Pozdrawiam
Go to the top of the page
+Quote Post
sawic
post 30.11.2006, 17:59:58
Post #20





Grupa: Zarejestrowani
Postów: 42
Pomógł: 0
Dołączył: 24.05.2005

Ostrzeżenie: (0%)
-----


Jestem w trakcie uruchamiania tego shoutbox-a.

Aby to zaczęło w ogóle działać musiałem zmienić rozszerzenie pliku ShoutBox na .php5 inaczej nie działało (serwer nazwa.pl)

W pliku ShoutBox.php linia 29 zmieniłem na:
  1. <?php
  2. $message = nl2br(stripslashes(htmlspecialchars(trim($message), ENT_QUOTES)));
  3. ?>


W ten sposób nie dodaje slashy tam gdzie nie trzeba, uważam, że mogło by już tak być w następnej wersji shoutbox-a.

Mam pytanko, na swojej stronie używam już id użytkownika, tyle że mam je w postaci np: 4b1dd5d6f2ae3ef002d25a6j4030e2df
Zmieniłem w bazie kolumnę FK_USER na char(32), ale nie wpisuje się cały ciąg znaków.

Czy mógłby mi ktoś powiedzieć co i gdzie mam zmienić, abym mógł używać takiego id w shoutboxie ?


Pozdrawiam
Go to the top of the page
+Quote Post

4 Stron V   1 2 3 > » 
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.08.2018 - 17:17