Adam Pawliczek

Adam Pawliczek Usability expert, UX
designer,
Interaction
specialist

Temat: Problem ze sprawdzeniem checkbox

Daniel Częstki:
W przypadku checkboxa samo istnienie klucza z formularza oznacza że został zaznaczony i wartosć ma drugorzędne znaczenie.
Moim zdaniem takie założenie nie jest zgodne z zasadami bezpieczeństwa.

konto usunięte

Temat: Problem ze sprawdzeniem checkbox

A niby czemu ? :P
Swoją drogą niezła dyskusja się rodzi z prostego sprawdzenia checkboxa.

konto usunięte

Temat: Problem ze sprawdzeniem checkbox

Chyba sobie kpicie co? Jak to nie można zastosować dwóch pól o tym samym name? :D I to jeszcze w checkbox? :D Proszę Was, to niby jak chcecie zrobić coś takiego:

Podaj co lubisz:
[] jak mi nogi śmierdzą
[] jak koń skacze na ogonie
[] jak pada słońce
[] jak świeci deszcz

masz formularz wielokrotnego wyboru, ja zaznaczam wszystkie to przecież to będzie wyglądać tak:


<input type="checkbox" name="co_lubie[]" value="1" />
<input type="checkbox" name="co_lubie[]" value="2" />
<input type="checkbox" name="co_lubie[]" value="3" />
<input type="checkbox" name="co_lubie[]" value="4" />


A teraz tylko dla pojedynczego wyboru:

Podaj co lubisz:
O jak mi nogi śmierdzą
O jak koń skacze na ogonie


<input type="radio" name="co_lubie" value="1" />
<input type="radio" name="co_lubie" value="2" />


No Panowie, zlitujcie się i przemyślcie co za bzdury pleciecie.

Pozdrawiam.

@edit
Adam Pawliczek:
3. A co jak przeglądarka wyśle zawartość formularza w innej kolejności ??? ;)

Mam nadzieje że to pytanie retoryczne...Przemek Czekaj edytował(a) ten post dnia 18.08.11 o godzinie 15:13

konto usunięte

Temat: Problem ze sprawdzeniem checkbox

Czekaj, czekaj. Czy przypadkiem w takiej sytuacji nie będzie to zestaw pól o nazwie co_lubie[n], a wynikiem tablica zaznaczonych wartości?

W przypadku radio - pójdzie ten który jest zaznaczony.

Ergo - jeśli mam wiele checkboxów to albo mają unikalny atrybut name albo są tablicą.
Jeśli mam radio - to mam co najmniej dwie opcje.

Tworzenie protez jak ta omawiana z ZF, to bezsens i niepotrzebny śmieć w kodzie.
Przecież i tak trzeba sprawdzać czy i co przyszło.
Daniel Częstki

Daniel Częstki senior php developer

Temat: Problem ze sprawdzeniem checkbox

Adam Pawliczek:
Daniel Częstki:
W przypadku checkboxa samo istnienie klucza z formularza oznacza że został zaznaczony i wartosć ma drugorzędne znaczenie.
Moim zdaniem takie założenie nie jest zgodne z zasadami bezpieczeństwa.

a to niby czemu ?
Maciej W.

Maciej W. Ruby on what?!

Temat: Problem ze sprawdzeniem checkbox

Daniel Częstki:
Adam Pawliczek:
Daniel Częstki:
W przypadku checkboxa samo istnienie klucza z formularza oznacza że został zaznaczony i wartosć ma drugorzędne znaczenie.
Moim zdaniem takie założenie nie jest zgodne z zasadami bezpieczeństwa.

a to niby czemu ?

W skrajnym przypadku - jesli ktos podstawia wartosc z tego pola gdzies do zapisu do bazy, a sprawdza tylko jego istnienie moze dostac cos czego zupelnie sie nie spodziewa.
Bartosz Ratajczyk

Bartosz Ratajczyk MS SQL Developer

Temat: Problem ze sprawdzeniem checkbox

A propos wielokrotnego parametru name - trzeba uważać w IE, bo getElementById() wyszukuje po 'id' i po 'name' właśnie (http://msdn.microsoft.com/en-us/library/ms536437%28VS...., w zależności od trybu działania:

Returns the first object with the specified ID or NAME.

If more than one element is found, getElementById returns the first object in the collection.

Windows Internet Explorer 8 and later. In IE8 Standards mode, getElementById performs a case-sensitive match on the ID attribute only. In IE7 Standards mode and previous modes, this method performs a case-insensitive match on both the ID and NAME attributes, which might produce unexpected results.
Adam Pawliczek

Adam Pawliczek Usability expert, UX
designer,
Interaction
specialist

Temat: Problem ze sprawdzeniem checkbox

Bartosz Ratajczyk:
In IE7 Standards mode and previous modes, this method performs a case-insensitive match on both the ID and NAME attributes, which might produce unexpected results.[/i]
Czasami mam wrażenie że 7 jest jeszcze gorsza niż 6...

konto usunięte

Temat: Problem ze sprawdzeniem checkbox

Dlatego od dawna nie piszę javascriptu bez jQuery. Wystarczą mi różnice w interpretacji CSS. Nie chce mi się użerać jeszcze z JS. Ostatnio nawet wzbogaciłem panel administracyjny o parę feature z HTML 5 i użytkownikowi IE który by chciał z tej przeglądarki z panelu korzystać wysyłam wiadomość żeby zainstalował sobie prawdziwą przeglądarkę internetową.

@Przemek Czekaj, nie kpimy, Używamy kontrolki zgodnie z przeznaczeniem.
Chcesz mieć tablicę ? robisz zapis name[]. Po stronie serwera dostaniesz array z zaznaczonymi polami.
Chcesz mieć coś na zasadzie przełącznika ? Checkbox.
Chcesz jedną opcję z wielu ? Od tego jest radio.

Co nie zmienia faktu że spotykam się z sytuacją gdy mamy mix pola hidden i checkbox dość często. Na ogół problem jest jeden. Chcesz wiedzieć czy checkbox został przesłany. Jeżeli tak to 1, jeżeli nie to 0. Ale 0 nie dostaniesz bo checkboxa nigdy przesyła gdy nie zaznaczony więc daje się pole hidden i przesłania się je checkboxem.
Inaczej by wiedzieć czy przesłano checkbox - musisz sprawdzać inne pole które zostało wysłane razem z nim.

konto usunięte

Temat: Problem ze sprawdzeniem checkbox

Michał Wachowski:
Czekaj, czekaj. Czy przypadkiem w takiej sytuacji nie będzie to zestaw pól o nazwie co_lubie[n], a wynikiem tablica zaznaczonych wartości?

W przypadku radio - pójdzie ten który jest zaznaczony.

Ergo - jeśli mam wiele checkboxów to albo mają unikalny atrybut name albo są tablicą.
Jeśli mam radio - to mam co najmniej dwie opcje.

Tworzenie protez jak ta omawiana z ZF, to bezsens i niepotrzebny śmieć w kodzie.
Przecież i tak trzeba sprawdzać czy i co przyszło.

No pewnie że tablica, a kto przy relacjach się będzie bawił w nazewnictwo unikatowe dla każdego checkboxa?

Nie utrudniajcie sobie i innym życia.

Temat: Problem ze sprawdzeniem checkbox

Witam
Mam problem dosyć podobny do opisywanego przez was wyżej niestety nie do końca to co jest napisane spełnia moje wymagania. otóż mój nazwijmy to roboczo system ma za zadanie z czytanie całego pliku i wyświetlenie go na ekranie a użytkownik dokonuje wyboru kolumn tego pliku które mają być wrzucone do bazy oraz ma dokonać wyboru typy na jaki ma zostać przekonwertowany string zanim trafi do bazy, dodatkowo po określeniu typy automatycznie maja być przyporzadkowane miejsca w bazie no i użytkownik może zaznaczyć max 4 checkbox'y. proszę o jakieś wskazówki
Łukasz Z.

Łukasz Z. Specjalista ds
Informatyki w Mentor
S.A.

Temat: Problem ze sprawdzeniem checkbox

Jak już ktoś bardzo chce używać hiddena w tym wypadku to proponowałbym zrobić tak:
1. Stworzyć hiddena i checkboxa z czego zrobić im unikalne nazwy (zgadzam się z tym, że nie powinno się robić dwóch elementów o takich samych nazwach).
2. Przed wysłaniem formularza sprawdzić przez JS czy checkbox jest zaznaczony - jeśli tak to do wartości hiddena wpisujemy 1, a jeśli nie to 0.
3. Po stronie serwera sprawdzamy tylko hiddena (jest dostępny zawsze, oraz wiemy, że może przyjąć tylko dwie wartości) ignorując w ogóle checkboxa (na dobrą sprawę można go nawet nie wysyłać).
Lelio Michele L.

Lelio Michele L. Informatyk,
programista /
Administrator
systemów Unix-Lin...

Temat: Problem ze sprawdzeniem checkbox

Najprościej będzie tak:

1. Zrobić zwykły checkbox html np. <input type="checkbox" id="check1" name="check1">;
1a. Można ewentualnie dostosować jego wygląd dla IE :-))) poprzez class i zdjąć marginesy ;
2. ustawić submit button domyślnie na 'disabled';
3. po stronie przeglądarki submit zmienia się na 'enabled' jeżeli zaznaczasz checkbox, a na 'disabled' jeżeli go odznaczasz, czyli do htmla odnoszącego się do checkboxa dodajesz onClick="if (this.checked==true) document.getElementById('id_przycisku_submit').disabled=false; else document.getElementById('id_przycisku_submit').disabled=true";
4. po stronie serwera sprawdzasz poprzez if(isset($_POST['check1'])), czy checkbox jest zaznaczony. Jeżeli okazuje się po stronie serwera , że checkbox nie jest zaznaczony, to po ponownym przekierowaniu na stronę formularza, pojawia się komunikat o konieczności jego ustawienia (najlepiej za pomocą ustawionej zmiennej sesyjnej) oraz ewentualne inne błędy formularza... które oczywiście powinny być najpierw ograniczone po stronie klienta...
Tak mi się wydane najprościej, ale może się mylę... :-))



Wyślij zaproszenie do