Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik programista
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 20 lipca 2026 12:45
  • Data zakończenia: 20 lipca 2026 13:06

Egzamin zdany!

Wynik: 21/40 punktów (52,5%)

Wymagane minimum: 20 punktów (50%)

Nowe
Analiza przebiegu egzaminu- sprawdź jak rozwiązywałeś pytania
Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

Zgodnie z aktualnie obowiązującym w Polsce prawem, osoby z wykształceniem inżynieryjno-technicznym są zobowiązane do odbywania szkoleń BHP w regularnych odstępach czasu, które nie powinny być dłuższe niż co

A. 1 rok
B. 5 lat
C. 6 lat
D. 8 lat
Wszystkie pozostałe odpowiedzi są błędne, ponieważ nie odpowiadają wymogom prawnym dotyczącym okresowych szkoleń BHP dla inżynieryjno-technicznych pracowników w Polsce. Odpowiedzi sugerujące, że szkolenia powinny odbywać się co 5, 6 lub 8 lat, opierają się na nieprawidłowym rozumieniu przepisów. Ustawa Kodeks pracy jasno określa, że okresowe szkolenia BHP mają na celu nie tylko dostarczenie pracownikom wiedzy na temat bezpieczeństwa, ale także dostosowanie ich umiejętności do zmieniających się warunków w miejscu pracy. Zbyt długi okres pomiędzy szkoleniami mógłby prowadzić do utraty aktualności wiedzy pracowników, co zwiększa ryzyko wypadków oraz zagrożeń zdrowotnych. W praktyce, regularne, coroczne szkolenia są niezbędne do nadążania za nowymi przepisami, technologiami oraz aktualizacjami w procedurach bezpieczeństwa. Ponadto, firmy, które zaniedbują wymóg przeprowadzania takich szkoleń, mogą być narażone na konsekwencje prawne oraz finansowe, w tym na kary administracyjne. Odpowiednie przestrzeganie przepisów dotyczących szkoleń BHP jest kluczowe dla zapewnienia bezpieczeństwa pracowników oraz ochrony firmy przed potencjalnymi stratami.

Pytanie 2

Dla celu strony internetowej stworzono grafikę rysunek.jpg o wymiarach: szerokość 200 px, wysokość 100 px. Aby zaprezentować tę grafikę jako miniaturę – pomniejszoną z zachowaniem proporcji, można użyć znacznika

A. <img src="/rysunek.png" style="width: 50px">
B. <img src="/rysunek.png" style="width: 25px; height:50px;">
C. <img src="/rysunek.png">
D. <img src="/rysunek.png" style="width: 25px; height:25px;">
Odpowiedź <img src="/rysunek.png" style="width: 50px"> jest poprawna, ponieważ umożliwia wyświetlenie grafiki w formacie miniatury, zachowując proporcje oryginalnego obrazu. Przy zmniejszaniu rozmiaru obrazu, kluczowe jest ustawienie tylko jednego z wymiarów (szerokości lub wysokości), co pozwala na automatyczne dostosowanie drugiego wymiaru w taki sposób, aby nie zniekształcić proporcji. W tym przypadku, ustawienie szerokości na 50 px pozwala na proporcjonalne zmniejszenie wysokości do około 25 px, co jest zgodne z zasadą, że proporcje powinny pozostawać niezmienione. W praktyce, korzystanie z CSS do określenia rozmiarów obrazków poprawia responsywność strony oraz jej estetykę, co jest zgodne z dobrymi praktykami w web designie. Warto również pamiętać, że do poprawy ładowania stron i doświadczenia użytkownika, często zastosowanie rozmiarów odpowiednich do urządzeń mobilnych oraz desktopowych jest kluczowe.

Pytanie 3

Która pętla w PHP wykona swoje instrukcje CO NAJMNIEJ RAZ, bo warunek sprawdzany jest dopiero na końcu?

A.
for
B.
do...while
C.
foreach
D.
while
Pętla do...while najpierw WYKONUJE blok instrukcji, a dopiero potem sprawdza warunek - dlatego jej ciało wykona się przynajmniej raz, nawet gdy warunek od początku jest fałszywy. Stosuje się ją, gdy coś trzeba zrobić co najmniej raz, np. wyświetlić menu, a potem pytać o powtórzenie. Zapamiętaj: warunek na KOŃCU = minimum jedno wykonanie.

Pytanie 4

Które wartości będą przechowywane w zmiennych po wykonaniu przedstawionej pętli języka PHP?

$i = 20;    $a = 0;
while($i) {
  $a += 2;
  $i--;
}
A. a = 20, i = 20
B. a = 40, i = 20
C. a = 40, i = 0
D. a = 0, i = 20
Odpowiedź jest poprawna, ponieważ zrozumienie jak działa pętla w języku PHP jest kluczowe dla efektywnej pracy z tym językiem. W tym przypadku mamy do czynienia z pętlą, która zaczyna się od wartości i = 20 i w każdej iteracji zmniejsza wartość i o 1, aż dojdzie do 0, kończąc pętlę. Zmienna 'a' jest zwiększana o 2 w każdej iteracji, co daje nam finalną wartość a = 40 po 20 iteracjach. To jest kluczowe dla zrozumienia, jak zmienne są aktualizowane i przechowywane w pętli PHP. Przykład ten pokazuje, jak można wykorzystać pętle do wykonywania powtarzalnych operacji na danych, co jest podstawowym elementem programowania. Pamiętaj, że zrozumienie, jak działa pętla, jest kluczowe do tworzenia efektywnych i wydajnych programów, nie tylko w PHP, ale w każdym języku programowania.

Pytanie 5

Dane są zapisy w tabeli uczniowie, które zostały przedstawione na rysunku. Jaki będzie rezultat wykonania podanego zapytania SQL?

Ilustracja do pytania
A. Suma ocen równa 14
B. Wartość 3.5
C. Dane 4, 3, 4, 3
D. Liczba wierszy równa 4
Zapytanie SQL SELECT AVG(ocena) FROM uczniowie ma na celu obliczenie średniej wartości kolumny ocena w tabeli uczniowie. Średnia arytmetyczna jest obliczana poprzez zsumowanie wszystkich ocen i podzielenie wyniku przez liczbę rekordów. W tym przypadku mamy cztery oceny: 4 3 4 i 3. Suma tych ocen wynosi 14 a liczba rekordów to 4 co daje średnią arytmetyczną równą 3.5. W przypadku baz danych funkcja AVG() jest standardowym sposobem na obliczanie średniej wartości w zestawie danych i jest powszechnie używana w analizie danych gdzie często zachodzi potrzeba określenia centralnej tendencji. Takie podejście pozwala na szybką ocenę ogólnej wydajności lub trendów w zbiorze danych. Praktyczne zastosowanie tego mechanizmu obejmuje analizy biznesowe gdzie przeciętna wartość sprzedaży lub innych metryk może dostarczyć cennych informacji. Warto również podkreślić że AVG() ignoruje wartości NULL co jest korzystne w analizie zestawów danych o niepełnych wpisach.

Pytanie 6

Który modyfikator dostępu daje dostęp do pola w obrębie klasy oraz w klasach dziedziczących (a nie z zewnątrz)?

A. publiczny
B. opublikowany
C. chroniony
D. prywatny
Pozostałe modyfikatory dają inny zakres dostępu lub nie istnieją. Publiczny (public) otwiera pole zewsząd - również dla kodu spoza klasy, więc jest za szeroki w stosunku do pytania. Prywatny (private) działa odwrotnie: zamyka dostęp wyłącznie w jednej klasie, tak że nie sięgną do pola nawet klasy dziedziczące. „Opublikowany” nie jest standardowym kwalifikatorem dostępu. Dostęp w klasie i klasach dziedziczących zapewnia modyfikator chroniony (protected), dlatego to on jest poprawny.

Pytanie 7

W języku CSS zdefiniowano następujące formatowanie:

 h1 i {color: red;}
Kolorem czerwonym zostanie zapisany
A. cały tekst nagłówka pierwszego stopnia oraz pochylony tekst akapitu.
B. tylko tekst pochylony nagłówka pierwszego stopnia.
C. cały tekst nagłówka pierwszego stopnia oraz cały tekst pochylony, niezależnie od tego, w którym miejscu strony się znajduje.
D. tylko tekst pochylony we wszystkich poziomach nagłówków.
Prawidłową odpowiedzią jest, że kolorem czerwonym zostanie zapisany tylko tekst pochylony nagłówka pierwszego stopnia. W CSS, gdy mówimy o selektorach potomków, odnosimy się do elementów, które są bezpośrednio lub niebezpośrednio umieszczone wewnątrz innego elementu. W przedstawionym kodzie CSS: h1 i {color: red;}, selektor pochylonego tekstu (<i>) wewnątrz nagłówka pierwszego stopnia (<h1>) jest selektorem potomka. Oznacza to, że reguła dotyczy tylko tych elementów <i> , które są umieszczone wewnątrz elementu <h1>. Właściwość 'color: red;' zmienia kolor tych elementów na czerwony. Istotne jest zrozumienie, że ta reguła nie wpływa na inne elementy strony, takie jak zwykły tekst w nagłówku h1 czy tekst pochylony w innych miejscach dokumentu. W praktyce, nauka zrozumienia i stosowania selektorów potomków w CSS jest kluczowa dla skutecznego i precyzyjnego formatowania elementów na stronie.

Pytanie 8

W stylu CSS utworzono klasę uzytkownik. Na stronie będą wyświetlane czcionką w kolorze niebieskim: p.uzytkownik { color: blue; }

A. jedynie elementy tekstowe takie jak <p>, <h1>.
B. akapitów, którym przypisano klasę uzytkownik.
C. wszystkie elementy w sekcji <body> z przypisaną klasą uzytkownik.
D. wszystkie akapity.
Odpowiedź, że paragrafy przypisane do klasy 'uzytkownik' będą miały niebieską czcionkę, jest jak najbardziej trafna. W CSS używamy kropki, żeby zdefiniować klasę, co oznacza, że styl dotyczy tylko tych elementów HTML, które mają tę klasę. Więc jeśli masz coś takiego w HTML jak <p class='uzytkownik'>, to na pewno będzie to wyświetlane z niebieską czcionką, zgodnie z Twoją regułą CSS. Takie podejście super wspiera modularność i możliwość ponownego użycia kodu, co jest naprawdę ważne w tworzeniu stron. Dzięki klasom CSS łatwo da się ogarnąć styl w różnych miejscach w kodzie, a zmieniając kolor czcionki w pliku CSS, zmiana ta natychmiast zaktualizuje wszystkie elementy z tą klasą. Przykładowo, akapit <p class='uzytkownik'> będzie miał niebieski kolor i to fajnie wpływa na spójność wizualną strony. Pamiętaj też, że klasy CSS można stosować nie tylko do akapitów, ale też do innych znaczników, co daje większą swobodę w stylizacji treści.

Pytanie 9

Z jakim problemem wiąże się poziom izolacji transakcji Repeatable Read (powtarzalny odczyt)?

A. z niepowtarzalnymi odczytami
B. z brudnymi odczytami
C. z utratą aktualizacji
D. z odczytami widmowymi (phantom reads)
Pozostałe problemy są eliminowane na tym lub niższych poziomach. Brudne odczyty (dirty reads - czytanie niezatwierdzonych danych) i niepowtarzalne odczyty (zmiana odczytanego wiersza) są już WYKLUCZONE przez Repeatable Read. Utrata aktualizacji to inny problem współbieżności. Z Repeatable Read wiążą się odczyty widmowe.

Pytanie 10

Element lub grupa elementów, która w jednoznaczny sposób identyfikuje każdy pojedynczy rekord w tabeli w bazie danych, nazywa się kluczem

A. przestawny
B. inkrementacyjny
C. obcy
D. podstawowy
Klucz inkrementacyjny to termin, który może być mylnie stosowany w kontekście kluczy podstawowych. Choć klucz podstawowy może być inkrementacyjny, co oznacza, że jego wartość rośnie w miarę dodawania nowych rekordów, nie jest to jego jedyna możliwa forma. Klucz podstawowy może być również złożony z kilku pól (klucz złożony) lub oparty na wartościach, które nie są inkrementowane. Z kolei klucz przestawny (ang. pivot key) to termin nieznany w klasycznej terminologii baz danych; nie odnosi się on do identyfikacji wierszy, a raczej do organizacji danych w tabelach przestawnych, które służą do agregacji danych. Klucz obcy (ang. foreign key) jest innym pojęciem, oznaczającym pole, które wskazuje na klucz podstawowy w innej tabeli i służy do zapewnienia powiązań między danymi, ale nie identyfikuje ono pojedynczych rekordów w danej tabeli. Typowe błędy w rozumieniu tych pojęć to mylenie ich ról oraz funkcji, co prowadzi do niewłaściwego projektowania baz danych, w którym integralność oraz relacje pomiędzy danymi są niewłaściwie zaimplementowane. Kluczowe jest, aby zrozumieć, że klucz podstawowy jest podstawowym komponentem dla każdej tabeli, a inne typy kluczy pełnią różne funkcje w kontekście relacji między danymi.

Pytanie 11

Które metody są związane z predefiniowanym obiektem Date w języku JavaScript?

A.
row()
B.
concat() oraz pop()
C.
getMonth() oraz getDay()
D.
fromCodePoint()
Obiekt Date w JavaScript przechowuje datę i czas oraz udostępnia metody do ich odczytu i ustawiania. Należą do nich m.in. getMonth() (numer miesiąca, 0-11), getDay() (dzień tygodnia, 0-6), getFullYear(), getHours() czy getTime(). Obiekt tworzy się przez new Date(). Dlatego z obiektem Date związane są getMonth() i getDay().

Pytanie 12

Zidentyfikuj poprawnie zbudowany warunek w języku PHP, który sprawdza brak połączenia z bazą MySQL.

A. if {mysql_connect_errno()}{}
B. if {mysqli_connect_error()}{}
C. if (mysqli_connect_errno()){}
D. if (mysql_connect_error())()
No, odpowiedzi, które wybrałeś, mają sporo błędów. Na przykład, 'if (mysql_connect_error())()' jest źle napisane, bo masz tu podwójne nawiasy, a powinny być pojedyncze. 'if {mysql_connect_errno(){}}' i 'if {mysqli_connect_error()}' używają klamr, gdzie powinny być nawiasy okrągłe, bo w PHP warunki muszą być w nawiasach. Te stare funkcje, takie jak 'mysql_connect_error()' czy 'mysql_connect_errno()', to już przeżytek, zostały usunięte w PHP 7.0. Teraz, wybierając 'mysqli', zapewniasz sobie lepsze bezpieczeństwo i działanie aplikacji. To jest kluczowe, żeby zrozumieć, jak poprawnie pisać kod, bo bez tego ciężko osiągniesz sukces w programowaniu w PHP.

Pytanie 13

Podane zapytanie SQL przyznaje użytkownikowi adam@localhost uprawnienia:

GRANT SELECT, INSERT, UPDATE, DELETE
ON klienci TO adam@localhost
A. do manipulowania danymi w tabeli klienci
B. do zarządzania strukturą tabeli klienci
C. do manipulowania danymi bazy danych klienci
D. do zarządzania strukturą bazy danych klienci
Pozostałe opcje wskazują na zarządzanie strukturą bazy danych lub tabeli co w kontekście podanego polecenia SQL nie jest prawidłowe Zarządzanie strukturą bazy danych odnosi się do operacji takich jak tworzenie usuwanie lub modyfikowanie tabel indeksów i innych obiektów bazy danych Przykłady takich operacji to polecenia CREATE ALTER i DROP które zmieniają definicję strukturalną tabel lub innych obiektów bazodanowych W przypadku zarządzania strukturą tabeli moglibyśmy mówić o dodawaniu nowych kolumn zmienianiu typu danych istniejących kolumn czy zmianach w kluczach indeksach Tego typu zmiany nie są objęte poleceniem GRANT SELECT INSERT UPDATE DELETE które koncentruje się wyłącznie na manipulacji danymi w istniejącej strukturze Dlatego też typowym błędem myślowym jest utożsamianie operacji na danych z operacjami modyfikującymi strukturę bazy danych takimi jak dodawanie tabel czy kolumn Operatorzy SQL są precyzyjnie zdefiniowani i rozdzieleni na kategorie manipulacji danymi DML oraz definicji danych DDL co jest kluczowym rozróżnieniem w pracy z bazami danych

Pytanie 14

W języku SQL, aby z tabeli Uczniowie wyodrębnić rekordy dotyczące wyłącznie uczennic o imieniu "Aleksandra", które przyszły na świat po roku "1998", należy sformułować zapytanie

A. SELECT * FROM Uczniowie WHERE imie="Aleksandra" OR rok_urodzenia > "1998"
B. SELECT * FROM Uczniowie WHERE imie="Aleksandra" AND rok_urodzenia < "1998"
C. SELECT * FROM Uczniowie WHERE imie ="Aleksandra" OR rok_urodzenia < "1998"
D. SELECT * FROM Uczniowie WHERE imie="Aleksandra" AND rok_urodzenia > "1998"
Wybór odpowiedzi zawierającej operator OR prowadzi do niepoprawnych wyników w kontekście tego zapytania. Operator OR wprowadza możliwość selekcji rekordów, które spełniają przynajmniej jeden z warunków, co nie odpowiada wymaganiu, aby zwracać wyłącznie te uczennice, które mają imię 'Aleksandra' oraz są urodzone po 1998 roku. Na przykład, w przypadku pierwszej odpowiedzi, zwrócone zostaną uczennice o imieniu 'Aleksandra' urodzone przed 1998 rokiem, co jest sprzeczne z wymaganiem, aby uwzględniać tylko uczennice urodzone po 1998 roku. Podobnie, druga odpowiedź również zwróciłaby uczennice o innych imionach, które urodziły się po 1998 roku, co nie jest zgodne z celem zapytania. Odpowiedź zawierająca operator AND jest preferowana w tym przypadku, ponieważ pozwala na dokładne określenie i weryfikację danych, co jest kluczowe w pracy z bazami danych. Prawidłowe zrozumienie różnicy między tymi operatorami jest istotne, aby unikać nieścisłości w wynikach zapytań SQL, szczególnie w kontekście przetwarzania danych w systemach informacyjnych. Operator AND jest używany w celu ograniczenia zbioru wyników, co zwiększa dokładność analizy danych, ułatwia raportowanie i podejmowanie decyzji opartych na danych.

Pytanie 15

Co oznacza polecenie:

UPDATE artykuly SET cena = cena * 0.7 WHERE kod = 2;
?
A. dodaje pole cena z atrybutem kod
B. dodaje do tabeli nowe pola cena i kod
C. obniża cenę o 30% dla WSZYSTKICH artykułów
D. obniża wartość pola cena dla rekordów, gdzie kod = 2
Polecenie UPDATE artykuly SET cena = cena * 0.7 WHERE kod = 2; mnoży dotychczasową cenę przez 0,7 (czyli obniża ją o 30%), ale TYLKO dla rekordów, gdzie kod = 2 - warunek WHERE ogranicza zmianę do wybranych wierszy. Dlatego obniża cenę dla rekordów z kod = 2.

Pytanie 16

Podczas przygotowywania grafiki do umieszczenia na stronie internetowej konieczne jest wycięcie tylko pewnego fragmentu. Jak nazywa się ta czynność?

A. zmiana rozmiaru.
B. kadrowanie.
C. łączanie warstw.
D. odwracanie obrazu.
Skalowanie to po prostu zmiana rozmiaru obrazka, ale nie zmienia on jego zawartości. Jak robimy grafikę na stronę, to może to się nie najlepiej skończyć, bo obraz może się zniekształcić, a tego chyba nikt nie chce w profesjonalnych projektach. Odbicie obrazu to lustrzane odwzorowanie grafiki, które tak naprawdę nie ma nic wspólnego z kadrowaniem. Może w sztuce się przyda, ale do wycinania nie pasuje. Łączenie warstw to technika, gdzie nakładamy różne elementy na siebie i to też nie ma nic wspólnego z wycinaniem, a bardziej z integracją. Ogólnie rzecz biorąc, to wszystko wynika z mylenia podstawowych pojęć związanych z edycją grafiki. Ludzie mogą myśleć, że te techniki są podobne, co prowadzi do nieporozumień. Ważne jest, żeby wiedzieć, że każda z tych technik ma swoje cele, a kadrowanie to coś, co skupia się na wycinaniu i kompozycji.

Pytanie 17

Polecenie colspan służy do łączenia komórek tabeli w poziomie, natomiast rowspan w pionie. Którą z tabel wyświetli poniższy fragment kodu napisany w języku HTML?

<table border="1" cellspacing="0" cellpadding="10">
    <tr>
        <td rowspan="2">&nbsp;</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>&nbsp;</td>
    </tr>
</table>
Ilustracja do pytania
A. A.
B. C.
C. B.
D. D.
Wybrana odpowiedź jest niepoprawna. W pytaniu chodziło o wykorzystanie atrybutów rowspan i colspan w tworzeniu tabel HTML. Atrybuty te służą do łączenia komórek tabeli w pionie i poziomie. W podanym fragmencie kodu HTML widzimy, że pierwsza komórka w pierwszym wierszu ma atrybut rowspan='2', co oznacza, że będzie się rozciągać na dwa wiersze w pionie. Druga komórka w pierwszym wierszu nie ma żadnych specjalnych atrybutów, zatem jest standardową komórką. W drugim wierszu jest tylko jedna komórka, gdyż druga komórka jest połączona z pierwszą komórką pierwszego wiersza przez atrybut rowspan. Opis odpowiada tabeli B, która ma jedną długą komórkę po lewej stronie rozciągającą się na dwa wiersze oraz dwie krótsze komórki po prawej stronie, po jednej w każdym wierszu. Pamiętaj, iż nieprawidłowe użycie atrybutów rowspan i colspan może prowadzić do niezamierzonych rezultatów, takich jak krzywe linie tabeli czy brakujące komórki.

Pytanie 18

Jakie będzie działanie podanych instrukcji JavaScript?

var elementy = document.getElementsByClassName("styl1");
  for(var i = 0; i < elementy.length; i++)
    elementy[i].style.fontWeight = "bolder";
A. Dla wszystkich elementów na stronie zostanie zastosowany styl pogrubienia tekstu na bolder
B. Dla wszystkich elementów przypisanych do klasy styl1 zostanie nadany styl pogrubienia tekstu bolder
C. Wyłącznie dla pierwszego elementu przypisanego do klasy styl1 zostanie nadany styl pogrubienia tekstu bolder
D. Jedynie dla elementu o id równym styl1 będzie przypisany styl pogrubienia tekstu na bolder
Instrukcje JavaScript w pytaniu wykorzystują metodę getElementsByClassName aby pobrać kolekcję wszystkich elementów na stronie które posiadają przypisaną klasę styl1. Metoda ta zwraca obiekt typu HTMLCollection który przypomina tablicę i zawiera odniesienia do elementów DOM posiadających określoną klasę. Następnie za pomocą pętli for przechodzimy przez każdy z tych elementów i zmieniamy ich styl na bolder przypisując nową wartość do właściwości style.fontWeight. Dzięki temu każdy element w kolekcji zostaje zmodyfikowany i wyświetlany z pogrubioną czcionką. Takie podejście jest zgodne z dobrymi praktykami w zakresie manipulacji DOM w JavaScript gdyż jest to sposób efektywny i bezpośredni. Użycie klas do grupowania elementów HTML pozwala na jednoczesne stosowanie stylów i operacji na grupach elementów co jest kluczowe w dynamicznym modelu tworzenia stron internetowych. Warto zwrócić uwagę na fakt że nazwy klas są czułe na wielkość liter co oznacza że styl1 i Styl1 byłyby traktowane jako różne klasy.

Pytanie 19

Które zdarzenie pozwala uruchomić skrypt JavaScript przy wysyłaniu formularza HTML i kontrolować jego wysłanie?

A. onEnter
B. onSubmit
C. onChange
D. onClick
Pozostałe zdarzenia dotyczą czego innego. onclick reaguje na kliknięcie elementu, onchange na zmianę wartości pola, a onEnter nie istnieje w standardzie. Wysłanie formularza obsługuje i kontroluje onsubmit.

Pytanie 20

Jakie stwierdzenie dotyczące zaprezentowanego kodu jest prawdziwe?

Ilustracja do pytania
A. Zostanie wyświetlony komunikat "OlaA"
B. Znak "=" pełni rolę operatora porównania dwóch zmiennych
C. W zmiennej $a wartość "Ala" zostanie zmieniona na "Ola"
D. Znak kropki "." jest operatorem konkatenacji
Znak kropki w języku PHP pełni rolę operatora konkatenacji łączącego ciągi znaków w jedną całość Jest to kluczowa funkcja przy pracy z danymi tekstowymi pozwalająca na dynamiczne tworzenie ciągów znaków na podstawie różnych zmiennych lub danych wejściowych Przykładowo w przypadku zmiennej $a o wartości Ala i zastosowania $a Ola wynikowym ciągiem staje się AlaOla W praktyce konkatenacja jest często stosowana do generowania złożonych komunikatów lub budowania ścieżek plików w aplikacjach webowych Operator konkatenacji jest również używany w połączeniu z innymi typami danych które mogą być automatycznie przekształcane na ciągi znaków zgodnie z zasadami PHP Konkatenacja jest fundamentalnym elementem interakcji z użytkownikami w interfejsach tekstowych oraz w przetwarzaniu danych wejściowych i wyjściowych Zrozumienie i umiejętność jej stosowania jest kluczowa dla efektywnego programowania w PHP oraz tworzenia dynamicznych i interaktywnych aplikacji webowych z zachowaniem wysokiej jakości kodu i zgodności ze standardami

Pytanie 21

Aby za pomocą CSS zdefiniować przedstawione na rysunku opływanie obrazu tekstem należy w stylu obrazu wprowadzić zapis

Ilustracja do pytania
A. float: right;
B. clear: both;
C. float: left;
D. table: left;
Twoja odpowiedź nie jest prawidłowa. Wszystkie podane błędne odpowiedzi są niepoprawne, ponieważ nie tworzą żądanego efektu opływania obrazu przez tekst. 'clear: both;' jest własnością CSS, która służy do zapobiegania opływaniu, a nie jego tworzeniu. Jest używana, gdy nie chcemy, aby dany element był opływany przez inne. 'table: left;' nie jest istniejącą własnością CSS, i nie ma związanego z nią konkretnego efektu. Właściwość 'float: left;' powoduje, że obraz zostaje przesunięty na lewą stronę strony, co powoduje, że tekst opływa go od prawej strony, a nie od lewej, jak to jest wymagane w pytaniu. Pamiętaj, aby zawsze dobrze zrozumieć, jakie efekty daje użycie konkretnych właściwości CSS, zanim zastosujesz je w praktyce.

Pytanie 22

W systemie baz danych stworzono tabelę Mieszkancy zawierającą informacje. Aby usunąć tę tabelę wraz z danymi, należy użyć komendy

A. TRUNCATE TABLE Mieszkancy;
B. DELETE FROM Mieszkancy;
C. DROP TABLE Mieszkancy;
D. ALTER TABLE Mieszkancy;
Polecenie 'DROP TABLE Mieszkancy;' jest właściwym sposobem na usunięcie tabeli wraz z jej zawartością w bazie danych. To polecenie nie tylko usuwa tabelę, ale również wszystkie dane, które w niej się znajdują oraz wszelkie powiązania, takie jak klucze obce. W praktyce, gdy programista chce całkowicie wyeliminować strukturę tabeli oraz jej dane, wykorzystuje 'DROP TABLE'. Jest to szczególnie przydatne w sytuacjach, gdy tabela nie jest już potrzebna w systemie, a jej usunięcie pozwala na zwolnienie zasobów oraz uproszczenie struktury bazy danych. Warto również pamiętać, że przed wykonaniem tego polecenia warto stworzyć kopię zapasową danych, jeśli są one istotne, ponieważ operacja ta jest nieodwracalna. Ponadto, zgodnie z zasadami dobrych praktyk, przed usunięciem tabeli należy upewnić się, że nie ma na nią żadnych zależności w innych częściach bazy danych, aby uniknąć potencjalnych problemów z integralnością danych.

Pytanie 23

Dla tablicy n-elementowej o nazwie t[n], algorytm, zapisany w formie kroków, ma za zadanie obliczenie sumy

Ilustracja do pytania
A. sumy wszystkich elementów tablicy
B. sumy tych elementów tablicy, których wartości są nieparzyste
C. co drugiego elementu tablicy
D. n-elementów tablicy
Błędne odpowiedzi, jakie podałeś, wynikają tak naprawdę z niezrozumienia algorytmu. Po pierwsze, suma wszystkich elementów tablicy wymagałaby przechodzenia przez każdy element bez przeskoków, więc musielibyśmy zwiększać indeks i o 1 w każdym kroku, a to odbiega od tego, co robi ten algorytm. Jakbyśmy chcieli sumować elementy nieparzyste, to musielibyśmy dodać warunek, który sprawdza, czy dany element jest parzysty, zanim go dodamy do wyniku. W ogóle nie ma takiego mechanizmu w tym algorytmie. Suma n-elementów tablicy jest błędna, bo algorytm pomija co drugi element, więc nie może być taką odpowiedzią. Typowe błędy, które się pojawiają w takich zadaniach, to niepełne rozumienie działania pętli i tego, jak aktualizowany jest indeks. Tego rodzaju myślenie może prowadzić do błędnych wniosków na temat tego, które elementy są brane pod uwagę. W praktyce ważne jest, żeby na spokojnie analizować, jak działają warunki iteracyjne i jakie mają konsekwencje dla przetwarzanych danych, bo to kluczowe przy projektowaniu algorytmów i ich wdrażaniu w różnych realnych sytuacjach, gdzie efektywność ma ogromne znaczenie.

Pytanie 24

Funkcja PHP var_dump() prezentuje dane na temat zmiennej, w tym jej typ oraz wartość. Jakim wynikiem zakończy się poniższy fragment kodu?

$x = 59.85; var_dump($x);
A. float(59.85)
B. int(59)
C. string(5) "59.85"
D. array(2) { [0]=> int(59) [1]=> int(85) }
Odpowiedź "float(59.85)" jest poprawna, ponieważ funkcja var_dump() w PHP wyświetla szczegółowe informacje o typie i wartości zmiennej. W tym przypadku zmienna $x przypisuje wartość 59.85, która jest liczbą zmiennoprzecinkową (float). Zgodnie z dokumentacją PHP, typ float odnosi się do wartości liczbowych zawierających część dziesiętną, co jest dokładnie tym, co przedstawia nasza zmienna. Przykładowo, w wielu zastosowaniach, takich jak obliczenia finansowe, jest kluczowe prawidłowe rozróżnienie między liczbami całkowitymi a zmiennoprzecinkowymi, ponieważ mogą one znacząco wpływać na dokładność wyników. Przestrzeganie dobrych praktyk programistycznych w PHP obejmuje umiejętne korzystanie z var_dump() w celu diagnozowania typów danych i wartości w czasie rzeczywistym. Umożliwia to programistom lepsze zrozumienie, jakie dane są przetwarzane w aplikacji, co jest szczególnie przydatne podczas debugowania lub rozwijania skomplikowanych projektów.

Pytanie 25

Funkcjonalność obejmującą edycję kodu źródłowego, jego kompilację, tworzenie zasobów programu, baz danych i komponentów udostępnia:

A. debugger
B. phpMyAdmin
C. środowisko IDE
D. Notepad++
Zintegrowane środowisko programistyczne (IDE - Integrated Development Environment) to program, który w jednym miejscu łączy narzędzia potrzebne do tworzenia oprogramowania: edytor kodu (z podpowiedziami i podświetlaniem składni), kompilator/uruchamianie, debugger, a często też zarządzanie projektem, bazami danych, zależnościami i kontrolą wersji. Przykłady to Visual Studio, IntelliJ IDEA, PhpStorm czy Eclipse. Dzięki integracji programista nie przełącza się między osobnymi aplikacjami. Dlatego pełną funkcjonalność tworzenia programu udostępnia środowisko IDE.

Pytanie 26

W HTML informacje o autorze, streszczeniu oraz słowach kluczowych strony powinny być umieszczone

A. pomiędzy znacznikami <head> i </head>, w znaczniku <meta>
B. pomiędzy znacznikami <body> i </body>, w znaczniku <meta>
C. pomiędzy znacznikami <body> i </body>, w znaczniku <html>
D. pomiędzy znacznikami <head> i </head>, w znaczniku <style>
W HTML kluczowe informacje, takie jak autor, streszczenie i słowa kluczowe, powinny być umieszczone między znacznikami <head> i </head>. Te znaczniki <meta> są naprawdę ważne, bo to one informują przeglądarki i wyszukiwarki o tym, co jest w Twojej stronie. Na przykład, znaczniki <meta name="description" content="Opis strony"> oraz <meta name="keywords" content="słowo1, słowo2, słowo3">. Dzięki tym danym, wyszukiwarki lepiej rozumieją, o czym jest strona, co może wpłynąć na jej pozycję w wynikach wyszukiwania. Moim zdaniem, dobrze przemyślane opisy i słowa kluczowe to klucz do sukcesu, bo to one przyciągają użytkowników do kliknięcia w Twój link. Pamiętaj też, że znacznik <title> i inne meta tagi w <head> są mega istotne dla SEO. Informacje te tworzą podstawy Twojego dokumentu HTML, więc warto je dobrze wypełnić, żeby strona działała jak należy.

Pytanie 27

Jakie polecenie pozwala na kontrolowanie oraz optymalizację bazy danych?

A. mysqldump
B. mysqlcheck
C. mysqlimport
D. mysqlshow
Odpowiedzi takie jak 'mysqlshow', 'mysqldump' i 'mysqlimport' są mylące, ponieważ nie pełnią roli narzędzi do sprawdzania i optymalizacji bazy danych. Narzędzie mysqlshow służy jedynie do wyświetlania informacji o bazach danych i tabelach, co może być użyteczne do monitorowania istniejących struktur, ale nie wpływa na ich integralność ani wydajność. Z kolei mysqldump jest wykorzystywane do tworzenia zrzutów danych z bazy, co jest kluczowe dla backupów, ale nie ma żadnych funkcji związanych z optymalizacją czy konserwacją. Wreszcie, mysqlimport jest narzędziem do importowania danych z plików zewnętrznych do bazy danych, a więc również nie odnosi się do kwestii sprawdzania czy optymalizacji. Wybierając te odpowiedzi, można dojść do błędnych wniosków, sądząc, że jedno narzędzie może pełnić wiele funkcji, podczas gdy każde z wymienionych narzędzi ma swoje specyficzne zadania. Zrozumienie różnicy między tymi narzędziami jest kluczowe dla efektywnego zarządzania bazami danych oraz stosowania najlepszych praktyk w ich administracji.

Pytanie 28

Na podstawie filmu wskaż, która cecha dodana do stylu CSS zamieni miejscami bloki aside i nav, pozostawiając w środku blok section?

A. nav { float: right; } section { float: right; }
B. nav { float: left; } aside { float: left; }
C. aside {float: left; }
D. nav { float: right; }
W tym zadaniu kluczowe jest zrozumienie, jak naprawdę działa float, a nie tylko samo skojarzenie, że „left to lewo, right to prawo”. Wiele osób myśli, że wystarczy ustawić jeden element na lewo, drugi na prawo i wszystko magicznie się poukłada. W praktyce przeglądarka trzyma się bardzo konkretnych reguł: najpierw liczy kolejność elementów w HTML, potem dopiero stosuje float i układa je możliwie jak najwyżej i jak najbliżej odpowiedniej krawędzi.

Jeśli nada się float tylko dla aside albo tylko dla nav, to zmienia się ich pozycja, ale układ trzech bloków nie spełni warunku z zadania: aside i nav nie zamienią się miejscami z pozostawieniem section w środku. Przykładowo, samo float: left na aside niczego nie „zamieni”, bo element i tak pojawia się jako pierwszy w kodzie, więc będzie u góry, tylko że „przyklejony” do lewej. Z kolei ustawienie nav na prawą stronę bez odpowiedniego floatowania section prowadzi do sytuacji, gdzie section nadal zachowuje się jak normalny blok, zwykle ląduje pod elementami pływającymi albo obok nich w sposób mało przewidywalny dla początkującego.

Częsty błąd myślowy polega też na tym, że ktoś próbuje wszystkim elementom dać float: left, licząc na to, że przeglądarka „ułoży je po swojemu”. Wtedy jednak wszystkie te bloki ustawiają się w jednym kierunku, w kolejności z HTML, więc nie ma mowy o świadomym „zamienianiu miejsc”. Brak zrozumienia, że float wyjmuje element z normalnego przepływu i wpływa na to, jak kolejne elementy zawijają się wokół niego, prowadzi właśnie do takich błędnych odpowiedzi. Z mojego doświadczenia lepiej jest najpierw narysować sobie prosty schemat: w jakiej kolejności idą znaczniki i które z nich mają pływać w prawo, a które zostać w naturalnym układzie. Dopiero wtedy dobiera się konkretne deklaracje CSS. Takie myślenie przydaje się nie tylko przy float, ale też przy nauce flexboxa czy grida, gdzie kolejność w DOM i własności układu też grają ogromną rolę.

Pytanie 29

Przedstawiona ikona funkcji edytora grafiki rastrowej o nazwie "różdżka" umożliwia

Ilustracja do pytania
A. odręczne zaznaczanie obszarów przez przeciąganie po nich kursora.
B. pobranie wskazanego koloru i ustawienie go jako aktywny.
C. wybiórcze rozsmarowywanie koloru za pomocą pędzla.
D. zaznaczenie obszaru na podstawie koloru.

Brak odpowiedzi na to pytanie.

Wyjaśnienie poprawnej odpowiedzi:
Dobrze! Odpowiedź jest poprawna. Narzędzie 'różdżka' w edytorze grafiki rastrowej służy do zaznaczania obszarów na podstawie koloru. Jest to bardzo przydatne, gdy chcemy zaznaczyć obszar o jednolitym kolorze lub gradientem kolorów. Działa ona na zasadzie kliknięcia w dany punkt obrazu, a następnie automatycznego zaznaczenia pikseli o kolorze zbliżonym do tego, w który kliknęliśmy. Użycie tej funkcji jest zdecydowanie efektywniejsze niż ręczne zaznaczanie obszarów, szczególnie dla skomplikowanych kształtów lub dużych obszarów o podobnej barwie. Ponadto, narzędzie to jest zgodne ze standardami i dobrą praktyką w branży edycji grafiki rastrowej, a jego umiejętne wykorzystanie może znacznie przyspieszyć prace edycyjne i zapewnić lepszą precyzję.

Pytanie 30

Na obrazie przedstawiono projekt układu bloków witryny internetowej. Zakładając, że bloki są realizowane za pomocą znaczników sekcji, ich formatowanie w CSS, oprócz ustawionych szerokości dla bloków: 1, 2,
3, 4 (blok 5 nie ma ustawionej szerokości), powinno zawierać właściwość

Ilustracja do pytania
A. clear: both dla wszystkich bloków.
B. clear: both dla bloku 5 oraz float: left dla pozostałych bloków.
C. float: left dla wszystkich bloków.
D. clear: both dla bloku 5 oraz float: left jedynie dla 1 i 2 bloku.
Twoja odpowiedź jest poprawna. Bloki 1, 2, 3 i 4 powinny być ustawione obok siebie na stronie. Możemy tego dokonać, stosując dla nich właściwość 'float: left' w CSS, która sprawia, że elementy są wyświetlane po lewej stronie swojego kontenera. Często stosuje się tę technikę przy projektowaniu layoutów stron internetowych, umożliwiając rozmieszczenie bloków w jednym rzędzie. Blok 5 powinien natomiast znajdować się poniżej tych bloków, co osiągniemy stosując właściwość 'clear: both'. Ta właściwość zapewnia, że element nie będzie obok żadnego z poprzednich bloków, nawet jeśli mają one ustawiony float. Jest to szczególnie przydatne w sytuacjach, gdy chcemy, aby pewien element (np. stopka strony) był wyświetlany poniżej innych bloków, niezależnie od ich położenia czy szerokości. W praktyce, prawidłowe zastosowanie tych dwóch właściwości jest kluczowe dla tworzenia responsywnych i atrakcyjnych layoutów stron.

Pytanie 31

W MS SQL Server rola predefiniowana o nazwie dbcreator umożliwia użytkownikowi

A. zarządzanie bezpieczeństwem systemu
B. wykonywanie wszelkich operacji na serwerze i posiadanie praw do każdej bazy
C. tworzenie, modyfikowanie, usuwanie oraz przywracanie bazy danych
D. zarządzanie plikami na dysku
Rola dbcreator w MS SQL Server rzeczywiście pozwala użytkownikowi na tworzenie, modyfikowanie, usuwanie i odzyskiwanie baz danych. Użytkownicy, którzy mają przypisaną tę rolę, mogą łatwo zarządzać bazami danych w danym serwerze, co jest kluczowe w środowiskach, gdzie bazy danych muszą być regularnie aktualizowane lub tworzone od podstaw. Przykładowo, w przypadku rozwijania aplikacji biznesowej, programista może korzystać z tej roli do tworzenia nowych baz danych na potrzeby testów, co pozwala na szybkie wdrażanie oraz iterację w procesie rozwoju oprogramowania. W praktyce, przypisanie roli dbcreator powinno być stosowane z uwagą, aby ograniczyć do minimum dostęp do krytycznych operacji tylko dla zaufanych użytkowników. Dobre praktyki sugerują regularne przeglądanie i audyt przypisania ról oraz monitorowanie działań użytkowników, aby zapobiegać nieautoryzowanym zmianom w strukturze baz danych.

Pytanie 32

Aby edytować nakładające się na siebie pojedyncze fragmenty grafiki, pozostawiając resztę bez zmian, należy zastosować:

A. kadrowanie
B. kanał alfa
C. warstwy
D. histogram
Warstwy to podstawowy mechanizm edytorów grafiki (np. GIMP, Photoshop): każdy element umieszcza się na osobnej warstwie, niczym na przezroczystej folii, a leżące wyżej zasłaniają niższe. Dzięki temu można edytować, przesuwać lub ukrywać pojedynczy fragment, nie naruszając pozostałych. To właśnie warstwy pozwalają pracować nad nakładającymi się elementami niezależnie - i dlatego są poprawną odpowiedzią.

Pytanie 33

Aby usunąć wszystkie rekordy z tabeli (zachowując samą tabelę), można użyć kwerendy:

A.
CREATE COLUMN
B.
TRUNCATE TABLE
C.
INSERT INTO
D.
ALTER COLUMN
Pozostałe polecenia nie czyszczą danych z tabeli. INSERT INTO działa odwrotnie - wstawia nowe wiersze. ALTER COLUMN odnosi się do modyfikacji definicji kolumny (jej typu czy nazwy), a nie do usuwania danych. CREATE COLUMN w ogóle nie istnieje w SQL. Usunięcie wszystkich rekordów z zachowaniem samej tabeli wykonuje TRUNCATE TABLE (alternatywnie DELETE bez WHERE), dlatego to ono jest poprawne.

Pytanie 34

W instrukcjach mających na celu odtwarzanie dźwięku jako muzyki tła na stronie internetowej NIE stosuje się atrybutu

A. volume="-100"
B. balance="-10"
C. href="C:/100.wav"
D. loop="10"
Odpowiedź href="C:/100.wav" jest prawidłowa, ponieważ atrybut href jest używany w kontekście linków hipertekstowych, a nie do odtwarzania dźwięku na stronie. W przypadku odtwarzania dźwięku w HTML, odpowiednie tagi to <audio> oraz związane z nimi atrybuty, takie jak src, controls, autoplay, loop, itp. Aby zrealizować odtwarzanie dźwięku jako podkładu muzycznego, używamy tagu <audio src="C:/100.wav" autoplay loop></audio>, co zapewnia, że dźwięk z pliku .wav będzie odtwarzany automatycznie i w pętli. Zgodnie z dobrymi praktykami, pliki audio powinny być dostępne na serwerze i wskazywane względem ich lokalizacji w sieci, co wspiera lepszą wydajność oraz dostępność. Użycie atrybutu href w tym kontekście jest niewłaściwe i może prowadzić do niepoprawnego działania strony, ponieważ przeglądarki nie interpretują tego w kontekście dźwięku. Przykładowo, zamiast href, należy zastosować odpowiednie atrybuty w tagu <audio> zgodnie z aktualnymi standardami HTML5.

Pytanie 35

Rozmycie Gaussa, wygładzanie oraz szum RGB to funkcje programów do obróbki:

A. grafiki rastrowej
B. grafiki wektorowej
C. dźwięku w formacie MIDI
D. ścieżki dźwiękowej
Te filtry działają na pikselach, więc nie dotyczą grafiki wektorowej (opisywanej krzywymi i wzorami) ani dźwięku - ani ścieżki audio, ani formatu MIDI. Rozmycie Gaussa, wygładzanie i szum RGB to funkcje obróbki grafiki rastrowej.

Pytanie 36

Wskaż funkcję JavaScript, która umożliwia obliczenie połowy kwadratu liczby podanej jako argument.

A. function wynik(a) { return a/2+a/2; }
B. function wynik(a) { return 2*a/a; }
C. function wynik(a) { return a*2/2; }
D. function wynik(a) { return a*a/2; }
Funkcja 'wynik' w postaci 'function wynik(a) { return a*a/2; }' poprawnie oblicza połowę kwadratu liczby 'a', co można zapisać matematycznie jako (a^2)/2. Takie podejście jest zgodne z definicją funkcji w programowaniu, gdzie argument 'a' jest przekazywany jako parametr, a następnie wykorzystany w obliczeniach. Przykładowo, jeśli przekazalibyśmy liczbę 4, wynik funkcji wyniósłby (4*4)/2 = 8. W praktycznych zastosowaniach, takie obliczenia mogą być przydatne w różnych dziedzinach, jak grafika komputerowa, gdzie oblicza się pola powierzchni, czy inżynieria, gdzie analizuje się różne parametry techniczne. Użycie operatora mnożenia i dzielenia zapewnia, że wyniki są zgodne z oczekiwaniami matematycznymi, co jest zgodne z najlepszymi praktykami programistycznymi, polegającymi na precyzyjnym oddzieleniu operacji arytmetycznych i dbałości o czytelność kodu.

Pytanie 37

Jakie są odpowiednie kroki w odpowiedniej kolejności, które należy podjąć, aby nawiązać współpracę pomiędzy aplikacją internetową po stronie serwera a bazą danych SQL?

A. nawiązanie połączenia z serwerem baz danych, wybór bazy, zapytanie do bazy - wyświetlane na stronie WWW, zamknięcie połączenia
B. wybór bazy danych, nawiązanie połączenia z serwerem baz danych, zapytanie do bazy - wyświetlane na stronie WWW, zamknięcie połączenia
C. zapytanie do bazy, wybór bazy, wyświetlenie na stronie WWW, zamknięcie połączenia
D. wybór bazy, zapytanie do bazy, nawiązanie połączenia z serwerem baz danych, wyświetlenie na stronie WWW, zamknięcie połączenia
Analizując niepoprawne odpowiedzi, można zauważyć, że każda z nich zawiera fundamentalne błędy w kolejności operacji. W przypadku pierwszej odpowiedzi, zaczynanie od zapytania do bazy danych bez wcześniejszego nawiązania połączenia z serwerem jest nie tylko niepraktyczne, ale wręcz niemożliwe. System nie jest w stanie wykonać jakiegokolwiek zapytania, jeśli nie istnieje aktywne połączenie, co prowadzi do błędów wykonania. W drugiej odpowiedzi również występuje błąd, polegający na wysyłaniu zapytania przed wybraniem bazy danych. W rzeczywistości, aby system mógł poprawnie zrealizować zapytanie, musi najpierw wiedzieć, z jaką bazą ma do czynienia. Ostatnia z niepoprawnych odpowiedzi, która sugeruje wybór bazy danych przed nawiązaniem połączenia, również jest błędna, ponieważ nie można wybrać bazy bez aktywnego połączenia z serwerem. W praktyce, każda z tych odpowiedzi nie uwzględnia kluczowych zasad dotyczących zarządzania połączeniami z bazami danych, takich jak zasady dotyczące transakcji oraz efektywnego zarządzania zasobami, co jest niezbędne w kontekście wydajnych aplikacji internetowych.

Pytanie 38

Które typy danych w języku C++ służą do reprezentacji liczb zmiennoprzecinkowych (rzeczywistych)?

A. double, bool
B. float, double
C. double, short
D. float, long
Liczby zmiennoprzecinkowe (rzeczywiste) reprezentują w C++ typy float i double, przy czym double oferuje większą precyzję (podwójną). Dlatego to one przechowują wartości z częścią ułamkową.

Pytanie 39

Język PHP zapewnia wsparcie dla

A. sesji i ciastek
B. klawiszy klawiatury
C. zdarzeń związanych z myszą
D. obiektów przeglądarki
PHP, jako język skryptowy po stronie serwera, oferuje wsparcie dla zarządzania sesjami oraz ciasteczkami, co jest kluczowe w kontekście tworzenia aplikacji internetowych. Sesje w PHP umożliwiają przechowywanie danych użytkownika pomiędzy różnymi żądaniami HTTP, co jest istotne w przypadku potrzeb utrzymania stanu aplikacji, np. podczas logowania. Dzięki funkcjom takim jak session_start() można łatwo rozpocząć nową sesję lub wznowić istniejącą. Ciasteczka, z kolei, pozwalają na przechowywanie danych po stronie klienta, co umożliwia personalizację doświadczeń użytkowników na stronie. Przykładem może być zapisywanie preferencji użytkownika, takich jak język interfejsu. Dobre praktyki w zakresie obsługi sesji i ciasteczek obejmują stosowanie bezpiecznych identyfikatorów sesji, ograniczanie czasu życia ciasteczek, a także ich szyfrowanie, co chroni przed atakami typu session hijacking. W ten sposób PHP gwarantuje, że aplikacje są nie tylko funkcjonalne, ale także bezpieczne.

Pytanie 40

Instrukcja REVOKE SELECT ON nazwa1 FROM nazwa2 w SQL pozwala na

A. przyznawanie uprawnień za pomocą ustalonego schematu
B. przyznawanie praw dostępu do tabeli
C. usuwanie konta użytkownika z bazy danych
D. pozbawianie użytkownika uprawnień
Pierwsza z błędnych odpowiedzi dotyczy nadawania uprawnień przy użyciu schematu, co jest trochę mylące. REVOKE nie nadaje, a odbiera uprawnienia. Wiele osób to myli, co prowadzi do zamieszania w zarządzaniu uprawnieniami. Kolejna nieprawidłowa odpowiedź mówi o usuwaniu użytkownika z bazy, co też jest błędne, bo REVOKE nie usuwa kont, a tylko zmienia uprawnienia. Kluczowe jest, żeby rozumieć różnicę między zarządzaniem uprawnieniami a użytkownikami. Ostatnia z błędnych odpowiedzi sugeruje, że to polecenie nadaje prawa do tabeli, a to totalnie mija się z prawdą, bo jego zadaniem jest właśnie odbieranie takich uprawnień. Z mojego doświadczenia, przydatne jest stosowanie GRANT do nadawania uprawnień, żeby uniknąć zamieszania. W zarządzaniu bazami danych ważne jest, żeby wiedzieć, jakie operacje dotyczą bezpieczeństwa danych i jak je właściwie stosować, żeby wszystko działało jak należy.