Wpisy oznaczone tagiem JavaScript

Jak zaznaczyć wiele checkboxów w jQuery?

Dziś będzie pierwsza szybka mini lekcja jQuery.

Krótka specyfikacja zadania:

  • mamy pewny kontener
  • w nim kilka pól typu checkbox
  • chcemy zaznaczyć/odznaczyć wszystkie checkboxy przy użyciu jednej akcji

Mniej więcej taki kod HTML:

<!-- nasz przycisk -->
<input id="przycisk" type="button" value="Zaznacz/Odznacz" />
<!-- nasze checkboxy -->
<input name="pole[]" type="checkbox" />
<input name="pole[]" type="checkbox" />

Oto rozwiązanie problemu:

$(document).ready(
	function() {
		$("#przycisk").click(function() {
			status = null;
			$("input[name^=pole]").each(function() {
				if( status == null ) {
					status = !this.checked;
				}
				this.checked = status;
			});
			return false;
		});
	}
);

Co się dzieje w kodzie JavaScript:

  • definiujemy zdarzenie onClick na polu id=przycisk
  • dzięki jQuery w prosty sposób filtrujemy wszystkie pola input, które posiadają wartość atrybutu name rozpoczynającą się od ciągu „pole”
  • każdemu takiemu elementowi zmieniamy atrybut checked na przeciwny (a dokładniej na przeciwny względem pierwszego checkboxa w tym przypadku)

Proste, szybkie, łatwe i wygodne, prawda? No to koniec pierwszej mini lekcji jQuery :-)

, , , ,

2 komentarzy

Cross-site scripting – bezpieczeństwo formularzy

Cross-site scripting (XSS lub inaczej CSS), to jak wiadomo taki rodzaj ataku na serwisy WWW, najczęściej przez źle walidowane formularze i najczęściej przez wstrzykiwany przez nie kod JavaScript.

Pokażę dziś jak można łatwo zabezpieczyć swoje formularze. Wystarczy kilka prostych wierszy kodu i po problemie. Najważniejsze jest aby całą tablicę $_POST umieć łatwo wyczyścić. Pokaże jak to zrobić rekurencyjnie.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Common() {
        public static function TidyString($str) {
                $str = stripslashes($str);
                $str = htmlspecialchars($str);
                return $str;
        }
 
        public static function TidyArray(&$array) {
                foreach((array)$array as $key => $value) {
                        if( !is_array($value) ) {
                                $array[$key] = Common::TidyString($value);
                        } else {
                                $array[$key] = Common::TidyArray($value);
                        }
                }
                return $array;
        }
}

W naszej klasie Common, widzimy dwie proste metody, TidyArray() oraz TidyString(). TidyArray() działa rekurencyjnie, obiega elementy tablicy i jeśli wartość nie jest tablicą to ją czyści poprzez TidyString(), jeśli element jest tablicą to wywołujemy naszą metodę rekurencyjnie na danym fragmencie tablicy. Wartości tablicy przekazujemy metodzie przez referencje.

Mając taka klasę możemy umieścić takie wywołanie gdzieś np. w pliku konfiguracyjnym naszej aplikacji.

1
$_POST = Common::TidyArray($_POST);

Należy pamiętać, że nasza metoda TidyString() posiada podstawowe funkcje „czyszczące”, można sobie ją dowolnie rozszerzyć np. dodać funkcję strip_tags(). Dodam jeszcze, że należy być ostrożnym przy filtrowaniu danych po serializacji.

, , , , , , , , , , , , ,

Brak komentarzy