Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Form builder & Admin Generator
Forum PHP.pl > Inne > Oceny
marcio
Witam chcialem pokazac moj projekt nad ktorym pracuje od dluzszego czasu i mysle ze moze on wkoncu wyjsc na swiatlo dzienne.

Chodzi o zbior klas ktore pomagaja nam tworzyc formularze,tworzyc formularze do edycji i wstawiana nowych danych i do generowania prostego Panelu Administracyjnego.

Projekt jest w fazie beta jako ze testuje go tylko ja i nie mam zbyt duzo czasu, jednak jak najbardziej sie staralem zeby nie bylo bledow i zeby wszystko bylo sprawne.

Tutaj jest repo: http://code.google.com/p/form-builider/

Tutaj mamy przykladowe wykorzystanie projektu online: http://marcio.ekmll.com/formbuilider/index.php

Sa 2 konta do testowania:

Login: ebreo rola: user
Login: vodka rola: admin

Dla obydwoch mamy haslo: qwerty

Jak juz wspomnialem wczesniej projekt do tej pory byl wykorzystywany tylko w czasie testow poki co w zycie go nie wprowadzalm bo nie mam tez gdzie, niejmniej dziala on na prostych tabelach bo na bardziej skomplikowanych nie probowalem.

Bylbym wdziedzczny za wszelkie uwagi na temat kodu i jego dzialania.

btw: prosze nie zwracac uwagi na wyglad, moze sie znajdzie ktos kto bylby chetny na ostylowanie projektu ;]

btw2: prosze nie zwraca uwagi na blad w builider bo nie wiem jak na code.google to zmienic wiec w kodzie tez tak zostalo wink.gif

edit:
mozna tworzyc wlasne "rozszerzenia"

-widok PA
-widok formularzy
-widok stronnicowania
-wlasne elementy html
-walidatory
-wlasne akcje dla PA
ShadowD
Jestem głupi, albo nie wiem co, żaden z pasów nie działa, jeśli w pa masz możliwość zmiany/usunięcia konta pomyśl nad jego zablokowaniem, bo tak zawsze się trafi jakiś miły gość który postanowi zmienić Ci te dane. :-)
marcio
Cytat(ShadowD @ 26.11.2011, 14:24:14 ) *
Jestem głupi, albo nie wiem co, żaden z pasów nie działa, jeśli w pa masz możliwość zmiany/usunięcia konta pomyśl nad jego zablokowaniem, bo tak zawsze się trafi jakiś miły gość który postanowi zmienić Ci te dane. :-)

W ogole nie zrozumialem o co chodzi...mozesz lepiej opisac problem?

edit:
aha zrozumialem zaraz sprawdze

@shadowD pass dla obu kont to qwerty
!*!
Pokasowałem wszytko i jest tylko napis "brak rekordów". Skrypt może i dobry, ale nie widzę zastosowania. Tworzenie formularza przy pomocy PHP? A co z oddzieleniem wyglądu od logiki? tongue.gif Przy b. małych projektach może i dobre pomimo niedopracowania, jednak przy czymś większym sprawi to więcej kłopotu niż pożytku.
marcio
kod zworocny poprzez admin generator mozna zawsze wsadzic do zmiennej w widoku...a w kontrolerze generowac PA.

Napisalem ze jest to do prostych projektow.
!*!
Teoretycznie tak, ale wsadzanie do widoku czegoś, co samo jest widokiem jest co najmniej dziwne.
marcio
A co w tym dziwnego wsadzasz do kontenera do ktorego ci pasuje nie widze nic w tym dziwnego.

A dwa ten admin generator ma swoje widoki formularzy/PA/stronnicowania wiec mozna jest zrobic pod wlasne potrzeby.
!*!
Po prostu zależy to od tego czy i jak podejdziesz do MVC. Mi nie pasuje robienie czegoś w php, co powinno leżeć po stronie kodera html czyli być samym widokiem. Kwestia podejścia smile.gif
Crozin
@!*!: Widok to warstwa aplikacji odpowiedzialna m.in. za wyświetlanie wyników działania aplikacji. To czy jest to "czysty" dokument HTML czy masa kodu PHP generująca HTML czy inny PDF jest kompletnie bez znaczenia.
marcio
Cytat(Crozin @ 27.11.2011, 13:42:21 ) *
@!*!: Widok to warstwa aplikacji odpowiedzialna m.in. za wyświetlanie wyników aplikacji. To czy jest to "czysty" dokument HTML czy masa kodu PHP generująca HTML czy inny PDF jest kompletnie bez znaczenia.

No i @Crozin ladnie ci to wytlumaczyl mozesz miec widok jako php,wikdok jako szablon...zalezy jak to robisz i jakie zadanie wysyla aplikacja.
!*!
Nie pisałem że to złe, tylko że mam inne podejście. A tak w ogóle to hasła nie działają.
marcio
Cytat(!*! @ 27.11.2011, 13:48:46 ) *
Nie pisałem że to złe, tylko że mam inne podejście. A tak w ogóle to hasła nie działają.

Czytajcie dobrze tematy haslo dla obu kont to qwerty

p.s: jesli klikniecie na jakis rekord news'a i ma on jakiej przypisane komentarze do niego to wyswietli sie tez panel dla komentarzy
!*!
Cytat(marcio @ 27.11.2011, 14:11:50 ) *
Czytajcie dobrze tematy haslo dla obu kont to qwerty


Wyobraź sobie że przeczytałem dobrze, to Twój skrypt nie działa z tym hasłem.
Daiquiri
Cytat(marcio @ 26.11.2011, 12:49:18 ) *
Login: ebreo rola: user
Login: vodka rola: admin

Dla obydwoch mamy haslo: qwerty


Cytat(!*! @ 27.11.2011, 14:54:35 ) *
Wyobraź sobie że przeczytałem dobrze, to Twój skrypt nie działa z tym hasłem.
Jesteś pewny smile.gif?
!*!
Kod
Nieprawidlowy login lub haslo


Daiquiri, jak najbardziej. wpisałem vodka i qwerty i częstuje mnie takim komunikatem. Problemem okazało się utworzone ciastko, czyli błąd skryptu, po jego skasowaniu można się bez problemu zalogować.
marcio
U mnie taki blad nie wystepuje.

Wylogowywania w panelu nie zrobilem potem zrobie link i zobacze czy dobrze kasuje sesje.
phpion
Cytat
Brak rekordow

Wrzuć coś bo bez danych nie ma co oceniać, a sam topic nadaje się do zamknięcia.
Niktoś
Normalnie ubawiłem się ,dla mnie 10 min roboty-zrobić formularz i przekierowanie do innej strony i wyświetlić monit brak rekordów i żeby to jeszcze jakimś layoutem było obudowane,a tutaj czysty dokument-niestety,ale tak to wygląda na chwile obecną,że normalnie nie ma co oceniać.
marcio
Cytat
Wrzuć coś bo bez danych nie ma co oceniać, a sam topic nadaje się do zamknięcia.

Potem wrzuce rekordy poprostu nie usuwajcie wszystkich, niby dlaczego nadaje sie do zamkniecia?

Cytat
Normalnie ubawiłem się ,dla mnie 10 min roboty-zrobić formularz i przekierowanie do innej strony i wyświetlić monit brak rekordów i żeby to jeszcze jakimś layoutem było obudowane,a tutaj czysty dokument-niestety,ale tak to wygląda na chwile obecną,że normalnie nie ma co oceniać.

Czy ty w ogole rozumiesz jak to dziala i co to w ogole jest ze walisz takie herezje?

Przeczytaj topic,strony wiki z code.google i komentarze kodu potem odpowiadaj w temacie poki co mowisz o czyms o czym nic nie wiesz a chcesz komentowac...pogladaj dobrze zanim zaczniesz pisac bzdury, porazka.

Layout mozna sobie zbudowac ale co nie chcialo ci sie sprawdzic wiec nabijasz posty na forum odpowiedzia ktora nic nie wnosi.

Projekt sluzy do budowania formularzy i PA na podstawie jednego zapytania do bazy za pomoca ktorego pobieramy i ustawiamy strukture tabeli i tworzymy formularze i PA i wszystko robi sie automatycznie.

Spojrz chociaz na index.php to mozesz zaczaisz o co kaman zanim napiszesz.

Niktoś
Widzisz ja taki efekt mogę uzyskać u siebie w 30 min w C#Net w GridView -to tabela z opcją edycji zapisu i usuwania rekordu w bazie danych z identyczną paginacją jak Ty masz.Tylko ,że ja tej kontrolki nie robiłem od podstaw.Tak więc "Szacun".
Ech,jak pisałem poprzedni post to niczego nie było oprócz monitu o braku rekordów.

Jest drobny błąd wstaw w url id=-1
Cytat
Podany argument do konstruktora nie jest tablica\n#0 /home/kmll/domains/ekmll.com/public_html/marcio/formbuilider/Admin_Generator.php(780): Volta_Form_Builider->__construct(NULL, true) #1 /home/kmll/domains/ekmll.com/public_html/marcio/formbuilider/Admin_Generator.php(878): Volta_Admin_Generator->set_instance('update', NULL) #2 /home/kmll/domains/ekmll.com/public_html/marcio/formbuilider/index.php(31): Volta_Admin_Generator->execute_action() #3 {main}

W ogóle 0 zabezpieczeń na xss nie wiem czy na sqlinjection już nie będę tego sprawdzał-tworzysz strukture tabeli jednym zapytaniem,a ktoś ci tym zapytaniem może to wszystko wysłać w kosmos.Wartałoby pomyśleć o zabezpieczeniach.
marcio
Cytat
Widzisz ja taki efekt mogę uzyskać u siebie w 30 min w C#Net w GridView -to tabela z opcją edycji zapisu i usuwania rekordu w bazie danych z identyczną paginacją jak Ty masz.Tylko ,że ja tej kontrolki nie robiłem od podstaw.Tak więc "Szacun".

Nie jestes u siebie i nie jest to twoje narzedzie takze szacun dla tego co napisal ta kontrolke a tobie co najwyzej bravo za umiejetne jej uzycie.

Cytat
Jest drobny błąd wstaw w url id=-1

Poprawienie bledu to kwiesta 2min jak juz mowilem sam wszystkiego sprawdzic nie idzie.

Cytat
W ogóle 0 zabezpieczeń na xss nie wiem czy na sqlinjection już nie będę tego sprawdzał-tworzysz strukture tabeli jednym zapytaniem,a ktoś ci tym zapytaniem może to wszystko wysłać w kosmos.Wartałoby pomyśleć o zabezpieczeniach.

Pokaz mi najpierw tego xss.
Sql injection tez, gdybac to sobie mozna, podczas pisania projektu nie zwracalem na to wiekszej uwagi ale watpie zebys cos znalazl tak "na wierzchu"
!*!
Kod
Pole haslo moze zawierac tylko znaki alfanumeryczne


Z tym to już chyba przesadziłeś wink.gif
marcio
Boze ludzie to sa tylko ustawienia testowe.Co to w ogole za roznica.
Jak pies czepia sie wlasnego ogona.

Cytat
Widzisz ja taki efekt mogę uzyskać u siebie w 30 min w C#Net w GridView

WIdzisz nie kazdy ma srv na windzie i kase na IIS.

A z dobrodziejstw net'a pod mono trudno skorzystac.
!*!
Ano czepiamy się bo dajesz Nam coś do oceny. Pół środek który nie jest skończony, niedopracowany lub jak wolisz posiada ustawienia testowe.
Niktoś
Co do xss to pochopnie to stwierdziłem,poprostu tnie urla i wywala na strone,ale te id=-1 może być skutkiem sql injection,tutaj artykuł:
http://biq.bblog.pl/wpis,podstawy;sql;injection,7613.html

Patrząc w kod źródłowy zauważyłem także, że niektóre tagi są niepodomykane.

Cytat
Widzisz nie kazdy ma srv na windzie i kase na IIS.

Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
Powinieneś wiedzieć że iss jest dostępny wraz z os i nie trzeba dodatkowo za niego płacić,no chyba że masz wersje os home lub starter.
Poza tym masz VSexpress wraz z IIS express ,na którym możesz pobawić się dowoli-gridview to standardowa kontrolka możesz się nią także pobawić w Mono.Ale to tak abstrahując od tego tematu aby uzupełnić troszeczkę twoje zainteresowania.
phpion
W momencie usuwania rekordu przydałoby się okienko potwierdzenia. Dodatkowo gdy już rekord zostanie usunięty to widzę komunikat pod tabelką, ale w tabeli rekord nadal jest - po usunięciu rekordu przekieruj użytkownika na listę rekordów, a nie wyświetlaj jej (tym bardziej, że usuwasz po wyświetleniu stąd wyświetlenie rekordu w tabeli).

Podczas edycji jeśli błędnie wypełnię formularz to formularz nie zapamiętuje wpisanych przeze mnie informacji - trzeba je wklepywać na nowo.

Na liście rekordów przydałoby się jeszcze jakieś filtrowanie rekordów oraz ich sortowanie. Fajnym bajerem byłoby również wykonanie akcji na X rekordach jednocześnie. Aktualnie ograniczasz to do usuwania, a przecież można np. jednocześnie aktywować/deaktywować X rekordów, tak więc taka funkcjonalność byłaby jak najbardziej przydatna.

Generalnie idea jak najbardziej słuszna, ale wykonanie nieco średniawe.
marcio
Cytat
Patrząc w kod źródłowy zauważyłem także, że niektóre tagi są niepodomykane

No moze tez tak byc...sry ale na kod html nie zwracam wiekszej uwagi dlatego zapytalem czy jest ktos chetny na zrobienie jakiegos "layout'u" bardziej stylu css i napisanie ladnego html'a.

Cytat
Co do xss to pochopnie to stwierdziłem,poprostu tnie urla i wywala na strone,ale te id=-1 może być skutkiem sql injection,tutaj artykuł:

No to wlasnie nie stwierdzajmy czegos, czego sie nie sprawdzilo.
Co do sql injection to watpie ze jest bo klasa do obslugi mysql sama filtruje zmienne do niej wprowadzane.

Cytat
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
Powinieneś wiedzieć że iss jest dostępny wraz z os i nie trzeba dodatkowo za niego płacić,no chyba że masz wersje os home lub starter.
Poza tym masz VSexpress wraz z IIS express ,na którym możesz pobawić się dowoli-gridview to standardowa kontrolka możesz się nią także pobawić w Mono.Ale to tak abstrahując od tego tematu aby uzupełnić troszeczkę twoje zainteresowania.

.Net znam slabo bo mam malo czasu, chcialbym znac o wiele lepiej z czasem zapelnie braki.

Cytat
W momencie usuwania rekordu przydałoby się okienko potwierdzenia. Dodatkowo gdy już rekord zostanie usunięty to widzę komunikat pod tabelką, ale w tabeli rekord nadal jest - po usunięciu rekordu przekieruj użytkownika na listę rekordów, a nie wyświetlaj jej (tym bardziej, że usuwasz po wyświetleniu stąd wyświetlenie rekordu w tabeli).

Co do okienka i przekierowania to da sie zrobic jak najbardziej, dzis lub jutro to poprawie.

Cytat
Podczas edycji jeśli błędnie wypełnię formularz to formularz nie zapamiętuje wpisanych przeze mnie informacji - trzeba je wklepywać na nowo.

Ta funkcjonalosc w ogole mi przez glowe nie przeszla i tak szczerze nie skorzystam wink.gif

Cytat
Na liście rekordów przydałoby się jeszcze jakieś filtrowanie rekordów oraz ich sortowanie. Fajnym bajerem byłoby również wykonanie akcji na X rekordach jednocześnie. Aktualnie ograniczasz to do usuwania, a przecież można np. jednocześnie aktywować/deaktywować X rekordów, tak więc taka funkcjonalność byłaby jak najbardziej przydatna.

Sortowanie tez postaram sie zrobic jak czas na to pozwoli.
Co masz na mysli mowiac filtrowanie?

EDIT:
http://code.google.com/p/form-builider/w/list polecam przeczytac
phpion
Cytat(marcio @ 28.11.2011, 08:29:13 ) *
Ta funkcjonalosc w ogole mi przez glowe nie przeszla i tak szczerze nie skorzystam wink.gif

Jak chcesz smile.gif moim zdaniem taki błąd (bo to błąd) jest ogromnym minusem jeśli myślisz o udostępnieniu tego softu szerszemu gronu odbiorców. Mając formularz np. z 20 polami w przypadku pomyłki konieczne jest ponowne wprowadzanie zmian. No ale Twoja decyzja hehe.

Cytat(marcio @ 28.11.2011, 08:29:13 ) *
Co masz na mysli mowiac filtrowanie?

Formularz filtrów obok listy rekordów. Mogę przefiltrować (wyszukać) odpowiednie dane (np. po tytule).
Niktoś
Cytat
No moze tez tak byc...sry ale na kod html nie zwracam wiekszej uwagi dlatego zapytalem czy jest ktos chetny na zrobienie jakiegos "layout'u" bardziej stylu css i napisanie ladnego html'a.


Te niepodomykane tagi to wynik błedów w twoim widoku.
$panel .= '<input type="checkbox" value="'.$record['id'].'" name="del[]"';
powinno być:
$panel .= '<input type="checkbox" value="'.$record['id'].'" name="del[]">';
Tam jest więcej takich niepodomykanych tagów ,więc posprawdzaj jeszcze raz jak kreujesz te tagi.

Po za tym zrobiłeś fajny form builder jak to nazwałeś pod html 4.01 -ja bym do widoku dodał jeszcze funkcje sprawdzającą
doctype strony i w zleżności od tego generował kontrolki w taki sposób:
  1. if ((doctype html5 )||(doctype xhtml)){
  2. if(sizeof($description) > 0){
  3. $panel .= '<img src="'.$description[1].'" alt="'.$description[0].'" />';
  4. else
  5. $panel .= '<input type="button" value="'.$description.'" />';
  6.  
  7. $panel .= '</a>';
  8.  
  9. }
  10. }
  11. else{
  12. if(sizeof($description) > 0){
  13. $panel .= '<img src="'.$description[1].'" alt="'.$description[0].'" >';
  14. else
  15. $panel .= '<input type="button" value="'.$description.'" >';
  16.  
  17. $panel .= '</a>';
  18.  
  19. }
  20. }
marcio
Cytat
W momencie usuwania rekordu przydałoby się okienko potwierdzenia. Dodatkowo gdy już rekord zostanie usunięty to widzę komunikat pod tabelką, ale w tabeli rekord nadal jest - po usunięciu rekordu przekieruj użytkownika na listę rekordów, a nie wyświetlaj jej (tym bardziej, że usuwasz po wyświetleniu stąd wyświetlenie rekordu w tabeli).

Zrobione wink.gif, moze nie profesjonalnie ale dziala na js sie nie znam a jak widac w html nie zwracam uwagi na tagi ;p

Sortowanie tez zrobilem po kolumnie wystarczy kilknac na dana kolumne w tabeli poki co sort tylko z DESC.

@Niktos jak ktos pomoze w html+css+js w tym projekcie to mozna cos takiego zrobic wersje pod html 4.01 i xhtml poki co to sie mija z celem.

Co do filtrow to sie jeszcze pomysli poki co chce poprawic ewentualne bledy i dodac jakies ulepszenia/uproszczenia pozniej sie wezme za rozbudowanie projektu.

Czy ktos ma jeszcze jakies uwagi?

Cytat
Fajnym bajerem byłoby również wykonanie akcji na X rekordach jednocześnie

O tym tez myslalem na samym poczatku ale jakos z tego zrezygnowalem przemysle !

Maly update.
Glowne zmiany dotycza kodu i zabezpieczen przed xss,csrf i sql injection.
ShadowD
Cytat
Podczas edycji jeśli błędnie wypełnię formularz to formularz nie zapamiętuje wpisanych przeze mnie informacji - trzeba je wklepywać na nowo.

Ta funkcjonalosc w ogole mi przez glowe nie przeszla i tak szczerze nie skorzystam wink.gif

W takim razie ja na start bym podziękował, jako admin wprowadzam sporo danych i o ile nie są zapisywane ajaxem i błędne zapisanie == strata forma to ja podziękuję postoję. Nie dość że odwalam często robotę za klienta to jeszcze miał bym się martwić skopiowaniem całości do notatnika przed wysłaniem.
marcio
Nie uwazam tego za jakas kluczowa funkcjonalnosc...

Prosze o idee innych ciekawych funkcjonalnosci ktore moznaby dodac
phpion
Spoko, przy formularzu z 3 polami to może i nie jest jakiś wielki problem, ale przy większych formularzach to już robi się kupa. No ale skoro dla Ciebie nie jest to ważna funkcjonalność to luz smile.gif

Do poprawy:
1. http://marcio.ekmll.com/formbuilider/index.php?sort=sraka
2. http://marcio.ekmll.com/formbuilider/index...e_news&id=1
3. http://marcio.ekmll.com/formbuilider/index...999999999999999
4. Podczas usuwania rekordu z użyciem checkboxa:
Warning: Invalid argument supplied for foreach() in /home/kmll/domains/ekmll.com/public_html/marcio/formbuilider/Admin_Generator.php on line 986
5. Brak sortowania w drugą stronę (jest tylko malejące, ale brak rosnącego).
6. W momencie edycji rekordu po wysłaniu formularza rekord pojawia się w dotychczasowej postaci (powinna być widoczna nowa zawartość).
7. Często wyskakuje mi "Zly token".
marcio
1,2,3 i 7 poprawione.

4 i 5 poprawie na dniach z tym ze usuwanie za pomoca checkbox'ow dzialalo wlasnie nie mam pojecia czemu nie dziala nawet post jest pusty...a tworze tablice z checkbox'ami bah...

Mam zamiar przepisac cala klase do obslugi bazy danych z dodaniem wyjatkow.
I napisac klase zajmujaca sie request'ami.

Elo czy ktos wie dlaczego:
  1. $panel .= '<input type="checkbox" value="'.$record['id'].'" name="del[]">';

Nie dziala w sensie ze tak nagle wysylanie tablicy przez post nie dziala, a jako jedna zmienna juz tak...rotfl
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.