Wyniki egzaminu

Informacje o egzaminie:
  • Zawód: Technik informatyk
  • Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych
  • Data rozpoczęcia: 21 kwietnia 2026 19:59
  • Data zakończenia: 21 kwietnia 2026 20:13

Egzamin niezdany

Wynik: 17/40 punktów (42,5%)

Wymagane minimum: 20 punktów (50%)

Udostępnij swój wynik
Szczegółowe wyniki:
Pytanie 1

Aby włączyć do skryptu zawartość pliku egzamin.php z kodem PHP, należy użyć polecenia

A. include("egzamin.php");
B. fgets("egzamin.php");
C. fopen("egzamin.php");
D. getfile("egzamin.php");
Instrukcja include w PHP jest używana do włączania zawartości jednego pliku PHP do innego. Dzięki temu możemy dzielić kod na mniejsze, modularne fragmenty, co ułatwia zarządzanie nim oraz sprzyja wielokrotnemu używaniu tych samych elementów w różnych częściach aplikacji. Kiedy używamy include('egzamin.php');, PHP wykonuje kod zawarty w pliku egzamin.php w miejscu, w którym znajduje się ta instrukcja. Jest to szczególnie przydatne w przypadku, gdy chcemy załadować szereg funkcji, klas lub nawet szablonów HTML. Ponadto, jeśli plik, który chcemy dołączyć, nie istnieje, PHP zgłosi ostrzeżenie, ale skrypt będzie kontynuowany. Z perspektywy standardów programowania i najlepszych praktyk w PHP, użycie include jest szeroko akceptowane do organizacji kodu. Przykładowo, w projekcie PHP można mieć osobny plik dla połączenia z bazą danych i dołączyć go w każdym skrypcie, który wymaga dostępu do danych. Taki sposób organizacji kodu zwiększa jego czytelność i ułatwia konserwację.

Pytanie 2

Jakie stwierdzenie dotyczące zaprezentowanego kodu jest prawdziwe?

Ilustracja do pytania
A. Znak "=" pełni rolę operatora porównania dwóch zmiennych
B. W zmiennej $a wartość "Ala" zostanie zmieniona na "Ola"
C. Znak kropki "." jest operatorem konkatenacji
D. Zostanie wyświetlony komunikat "OlaA"
W analizowanym kodzie występuje kilka nieporozumień dotyczących działania operatorów Znak równości w PHP pełni rolę operatora przypisania a nie porównania Działa on poprzez przypisywanie wartości znajdującej się po prawej stronie do zmiennej po lewej stronie Operator porównania w PHP to podwójny znak równości == który sprawdza czy dwie wartości są sobie równe lub potrójny === który dodatkowo sprawdza typy danych Z kolei operator kropki w PHP jest używany do łączenia ciągów znaków a nie do przypisywania wartości lub porównywania W przedstawionym kodzie $a Ola używa operatora kropek z przypisaniem aby dołączyć Ola do zmiennej $a która zawierała wcześniej Ala Co więcej twierdzenie że zmienna zostanie zmieniona z Ala na Ola jest błędne ponieważ operacja konkatenacji powoduje dodanie drugiej wartości do pierwszej a nie jej zastąpienie Każda z tych błędnych interpretacji może wynikać z mylnego zrozumienia podstawowych operatorów PHP i ich funkcji w manipulatorze ciągów znaków oraz przypisywaniu wartości Operator konkatenacji jest fundamentalnym narzędziem w programowaniu PHP pozwalającym na dynamiczne zarządzanie i modyfikację tekstu w aplikacjach co czyni jego znajomość kluczową dla każdego programisty Aby uniknąć takich błędów warto dobrze poznać podstawy składni i semantyki języka PHP oraz regularnie ćwiczyć ich zastosowanie w praktycznych scenariuszach projektowych

Pytanie 3

Jaki język skryptowy o uniwersalnym zastosowaniu powinien być użyty do tworzenia aplikacji internetowych, wkomponowanych w kod HTML i działających na serwerze?

A. Perl
B. JavaScript
C. C#
D. PHP
PHP, czyli Hypertext Preprocessor, to taki język skryptowy, który jest mega popularny, szczególnie jeśli chodzi o dynamiczne strony www. Fajnie, że można go wplatać w HTML i uruchamiać na serwerze, bo to pozwala generować treści na bieżąco, tak jak chce użytkownik. PHP współpracuje z różnymi bazami danych, na przykład MySQL, co czyni go super wyborem dla aplikacji, które muszą się z nimi łączyć. Dzięki frameworkom, jak Laravel czy Symfony, programiści mogą szybko i sprawnie tworzyć bardziej skomplikowane aplikacje. PHP jest też zgodny z wieloma standardami webowymi, więc działa na różnych serwerach i systemach operacyjnych. Przykład? Weźmy WordPress - to popularny system zarządzania treścią, który w całości jest zrobiony właśnie w PHP. No i nie można zapomnieć, że jest prosty i elastyczny, co sprawia, że chętnie uczą się go zarówno początkujący, jak i doświadczeni programiści.

Pytanie 4

W formularzu dokumentu PHP znajduje się pole <input name="im" />. Po wpisaniu przez użytkownika ciągu „Janek”, aby dodać wartość tego pola do bazy danych, w tablicy $_POST będzie obecny element

A. im z kolejnym numerem indeksu
B. Janek z kolejnym numerem indeksu
C. Janek z indeksem im
D. im z indeksem Janek
Odpowiedzi, które nie są poprawne, bazują na nieprawidłowych założeniach dotyczących sposobu, w jaki PHP przetwarza dane z formularzy. Pierwsza z niepoprawnych odpowiedzi sugeruje, że w tablicy $_POST istnieje element o kluczu 'im' z indeksem 'Janek'. W rzeczywistości, kluczem jest nazwa pola, a wartością jest to, co zostało wprowadzone przez użytkownika, więc takie połączenie klucza i wartości jest mylące. W drugiej niepoprawnej opcji mowa o 'Janek' jako kluczu, co również jest błędne, ponieważ 'Janek' jest wartością, a nie kluczem. Klucz w tablicy $_POST to zawsze nazwa pola formularza, czyli w tym przypadku 'im', a jego wartość to 'Janek'. Trzecia niepoprawna odpowiedź sugeruje, że klucz 'im' miałby być skojarzony z kolejnym numerem indeksu. To również jest niewłaściwe, ponieważ PHP nie dodaje automatycznie numerów indeksów do kluczy tablic, a klucze pozostają takie same, jak nazwy w formularzu. W każdej sytuacji nazwa pola pozostaje kluczem, co jest istotnym elementem przetwarzania danych w PHP.

Pytanie 5

Jaką wartość zwróci funkcja empty($a); w języku PHP, gdy zmienna $a będzie miała wartość liczbową 0?

A. TRUE
B. NULL
C. 0
D. FALSE
Funkcja empty() w języku PHP służy do sprawdzania, czy zmienna jest pusta. Zmienna jest uznawana za pustą, jeśli jej wartość jest równa FALSE, NULL, "", 0, '0', lub jeśli zmienna nie została zainicjowana. W przypadku, gdy zmienna $a ma wartość liczbową równą 0, funkcja empty($a) zwróci TRUE, ponieważ 0 jest interpretowane jako wartość fałszywa w PHP. To zachowanie jest zgodne z typowaniem luźnym, które stosuje PHP, gdzie różne typy danych mogą być automatycznie konwertowane na typ logiczny. Praktycznie, można to zobaczyć w kodzie: $a = 0; var_dump(empty($a)); // wynikiem będzie bool(true). Wartości takie jak FALSE, NULL oraz pusty ciąg również zwracają TRUE w tej funkcji. Zrozumienie działania funkcji empty() jest kluczowe w kontekście pisania efektywnego i pozbawionego błędów kodu w PHP, szczególnie w sytuacjach, gdzie zależy nam na walidacji danych wejściowych."

Pytanie 6

Funkcja napisana w PHP ma na celu

Ilustracja do pytania
A. nawiązanie połączenia z bazą danych
B. pobranie informacji z bazy danych
C. ustawienie hasła do bazy danych
D. zabezpieczenie bazy danych
Ustawienie hasła do bazy danych nie jest realizowane przez zapytanie SQL w PHP lecz przez konfigurację połączenia z bazą danych zwykle przy użyciu funkcji mysql_connect lub mysqli_connect gdzie hasło jest jednym z parametrów. Zabezpieczenie bazy danych nie polega na prostym zapytaniu lecz wymaga szerszego podejścia obejmującego kontrolę dostępu zarządzanie uprawnieniami szyfrowanie danych i ochronę przed atakami SQL Injection. Połączenie z bazą danych w PHP realizowane jest poprzez funkcje umożliwiające nawiązanie sesji z serwerem bazodanowym jak mysql_connect lub nowocześniejsze mysqli_connect oraz obiekty PDO które oferują bardziej zaawansowane mechanizmy zarządzania połączeniami. Często występującym błędem jest mylenie funkcji odpowiedzialnych za zarządzanie połączeniem z funkcjami wykonującymi operacje na danych. Mylenie tych dwóch aspektów pracy z bazą danych prowadzi do błędów w aplikacjach jak niewłaściwe zarządzanie zasobami lub podatność na ataki. Nowoczesne podejścia takie jak stosowanie ORM-ów jak Doctrine w PHP abstrahują wiele tych mechanizmów co upraszcza zarządzanie tymi aspektami w kodzie. Ważnym aspektem jest także stosowanie praktyk bezpieczeństwa takich jak walidacja i sanitizacja danych oraz używanie przygotowanych wyrażeń co jest kluczowe w ochronie danych i zapewnieniu prawidłowego działania aplikacji. Zrozumienie tych podstawowych elementów jest kluczowe w tworzeniu bezpiecznych i wydajnych aplikacji bazodanowych.

Pytanie 7

Fragment kodu w PHP przedstawia się następująco (patrz ramka): Przy założeniu, że zmienna tablicowa $tab zawiera liczby naturalne, wynik działania programu polega na wypisaniu

Ilustracja do pytania
A. największego elementu w tablicy
B. tych elementów, które przewyższają wartość zmiennej $liczba
C. najmniejszego elementu w tablicy
D. elementu tablicy równemu wartości $tab[0]
Zobaczmy teraz, co poszło nie tak z innymi odpowiedziami. W przypadku tej, co miała znaleźć najmniejszy element, to kod nie jest w stanie tego zrobić, ponieważ warunek if sprawdza, czy element jest większy, a powinien być mniejszy, żeby szukać minimum. Jakby zmienić na if ($element < $liczba), to byłoby ok. W innej odpowiedzi twierdzono, że program znajdzie element równy $tab[0], ale w kodzie nie ma żadnego porównania z tym pierwszym elementem, poza tym, że przypisujemy go do $liczba na początku. Brak tam dodatkowej logiki, żeby to ogarnąć. A w ostatniej odpowiedzi pisano o wypisywaniu elementów większych od $liczba, ale kod nie działa w ten sposób, bo nie ma tam nic, co by pozwalało na wypisywanie więcej niż jednego elementu. Program jedynie aktualizuje $liczba, żeby znaleźć największą wartość. Często takie pomyłki biorą się z braku zrozumienia, jak działa iteracja i porównania w programowaniu, gdzie trzeba dobrze rozumieć, jakie warunki i operacje są potrzebne.

Pytanie 8

W języku PHP, dla zmiennych a = 5 oraz b = 3, jakie wyrażenie zwróci wartość zmiennoprzecinkową?

A. a * b
B. a && b
C. a + b
D. a / b
Wybór operacji a + b prowadzi do 8, co jest wartością całkowitą, a nie zmiennoprzecinkową. Operator dodawania w PHP sumuje dwie liczby i w przypadku, gdy obie liczby są całkowite, wynik również pozostaje w tym samym typie. W kontekście operacji arytmetycznych, dodawanie nie wprowadza dodatkowej precyzji i nie korzysta z możliwości reprezentacji liczb dziesiętnych, co czyni je mniej odpowiednim w sytuacjach wymagających większej dokładności. Kolejna niepoprawna odpowiedź to a * b, która również zwraca 15, co jest wartością całkowitą. Mnożenie podobnie jak dodawanie nie zmienia typu wyniku, dlatego nie spełnia warunków pytania. Operacje mnożenia są powszechnie wykorzystywane, ale w przypadku podanych zmiennych nie generują wartości zmiennoprzecinkowej. Ostatnia z niepoprawnych odpowiedzi, a && b, to operator logiczny, który sprawdza, czy obie zmienne są prawdziwe (true). W PHP operator ten zwraca wartość logiczną true lub false, w zależności od tego, czy obydwie zmienne są różne od zera. W tym przypadku, ponieważ a i b są różne od zera, wynik tego wyrażenia to true, co zdecydowanie nie jest wartością zmiennoprzecinkową. Operator logiczny nie jest więc odpowiedni do uzyskiwania wyników numerycznych i nie może być używany do obliczeń arytmetycznych.

Pytanie 9

W PHP utworzenie oraz przypisanie tablicy asocjacyjnej do zmiennej odbywa się poprzez zapis

A. $tab = array (1, 2, 3, 4);
B. $tab = array (); $tab[] = array (1, 2, 3, 4);
C. $tab = array ("a" => 1, "b" => 2, "c" => 3);
D. $tab = array (array (1, 2), array (3, 4));
Żeby dobrze stworzyć i przypisać zmiennej tablicę asocjacyjną w PHP, trzeba użyć głównie składni, która pozwoli nam przypisać wartości do konkretnych kluczy. Jak mamy zapis $tab = array ("a" => 1, "b" => 2, "c" => 3); to definiujemy tablicę, w której klucze to "a", "b" i "c", a wartości to 1, 2 i 3. Takie tablice asocjacyjne w PHP są naprawdę super, bo ułatwiają zarządzanie danymi, dzięki czemu bez problemu możemy sięgać po wartości używając unikalnych kluczy zamiast nudnych indeksów. Można to sobie wyobrazić na przykładzie aplikacji, gdzie klucze są identyfikatorami użytkowników, a wartości to ich dane. Jest to mega pomocne, szczególnie w dużych projektach, gdyż kod staje się bardziej czytelny i łatwiejszy do naprawy. Tak więc umiejętne korzystanie z tablic asocjacyjnych to kluczowa umiejętność w programowaniu w PHP, a dobrze przypisane wartości do kluczy ułatwiają pracę z danymi.

Pytanie 10

Do czego służy funkcja PHP o nazwie mysql_num_rows?

A. przyporządkować numery rekordom w bazie danych
B. oddawać następny rekord z wyników zapytania
C. zwracać rekord, którego numer został przekazany jako parametr funkcji
D. podawać liczbę wierszy, które są w wynikach zapytania
Funkcja mysql_num_rows w PHP jest kluczowym narzędziem do interakcji z bazami danych MySQL, umożliwiając programistom efektywne zarządzanie danymi. Jej głównym zadaniem jest zwrócenie liczby wierszy, które zostały zwrócone w wyniku zapytania SQL. Jest to niezwykle przydatne w sytuacjach, gdy chcemy ocenić, ile rekordów spełnia określone kryteria, co może być istotne na przykład w przypadku paginacji wyników lub dynamicznego dostosowywania interfejsu użytkownika w zależności od liczby dostępnych danych. Użycie tej funkcji polega na przesłaniu do niej wskaźnika na wynik zapytania, co pozwala na bezpośrednie uzyskanie liczby wierszy bez konieczności przeszukiwania danych. Przykładowo, po wykonaniu zapytania SELECT, aby uzyskać liczbę wierszy, wystarczy użyć: $result = mysql_query('SELECT * FROM tabela'); $liczba_wierszy = mysql_num_rows($result);. Funkcja ta jest zgodna z wytycznymi dotyczącymi standardów SQL i jest szeroko stosowana w aplikacjach webowych, które wymagają efektywnego przetwarzania danych. Należy jednak pamiętać, że mysql_num_rows jest częścią przestarzałego rozszerzenia MySQL, a programiści powinni rozważyć użycie mysqli lub PDO, które oferują lepszą obsługę i bezpieczeństwo.

Pytanie 11

Jakie możliwości daje funkcja phpinfo()?

A. analizowanie kodu PHP
B. uzyskanie informacji o środowisku pracy serwera obsługującego PHP
C. zweryfikowanie wartości zmiennych użytych w kodzie PHP
D. uruchomienie kodu w języku PHP
Funkcja phpinfo() jest niezwykle przydatnym narzędziem, które dostarcza szczegółowych informacji na temat konfiguracji środowiska PHP na serwerze. Wywołanie tej funkcji generuje stronę HTML z danymi takimi jak wersja PHP, załadowane rozszerzenia, zmienne konfiguracyjne oraz informacje o systemie operacyjnym. Przykładowo, podczas rozwiązywania problemów z aplikacjami PHP, programiści mogą skorzystać z phpinfo() w celu weryfikacji, czy odpowiednie rozszerzenia są załadowane, co może być kluczowe dla poprawnego działania aplikacji. Dodatkowo, funkcja ta umożliwia identyfikację potencjalnych problemów z konfiguracją, takich jak niewłaściwie ustawione ścieżki do skryptów czy braki w wymaganych rozszerzeniach. Zgodnie z najlepszymi praktykami, phpinfo() powinno być używane tylko w środowiskach deweloperskich, a nie produkcyjnych, aby nie ujawniać wrażliwych informacji o serwerze. Dobrą praktyką jest również usunięcie lub zabezpieczenie dostępu do stron, które wywołują tę funkcję, aby zminimalizować ryzyko ataków.

Pytanie 12

Jaką funkcję w języku PHP należy wykorzystać, aby nawiązać połączenie z bazą danych o nazwie zwierzaki?

A. $polacz = server_connect('localhost', 'root','','zwierzaki')
B. $polacz = mysqli_connect('localhost', 'root','','zwierzaki')
C. $polacz = db_connect('localhost', 'root','','zwierzaki')
D. $polacz = sql_connect('localhost', 'root','','zwierzaki')
Odpowiedzi takie jak $polacz = db_connect('localhost', 'root','','zwierzaki'); oraz $polacz = sql_connect('localhost', 'root','','zwierzaki'); są niepoprawne, ponieważ nie istnieją takie funkcje w standardowym zestawie funkcji PHP. Użycie nieodpowiednich nazw funkcji może prowadzić do nieporozumień oraz błędów w kodzie, które mogą być trudne do zdiagnozowania, zwłaszcza dla nowicjuszy. Dodatkowo, funkcja db_connect sugeruje, że mogłaby być częścią jakiegoś frameworka lub biblioteki, co wprowadza w błąd, gdyż w standardowym PHP nie są one dostępne. Podobna sytuacja ma miejsce z sql_connect, która również nie jest częścią standardowej biblioteki PHP. Użycie tych funkcji w kodzie bez zaimplementowania ich definicji spowoduje błąd wykonania. Z kolei $polacz = server_connect('localhost', 'root','','zwierzaki'); również nie jest poprawną odpowiedzią, ponieważ server_connect nie jest zdefiniowaną funkcją w PHP. Kluczowym błędem, jaki można popełnić, jest poleganie na przestarzałych metodach lub funkcjach, które nie są już wspierane przez PHP, co może prowadzić do problemów z bezpieczeństwem i wydajnością aplikacji. Programiści powinni być świadomi aktualnych standardów i korzystać z obiektowych interfejsów, takich jak MySQLi lub PDO, które oferują większe bezpieczeństwo i elastyczność w zarządzaniu połączeniami z bazą danych.

Pytanie 13

W języku PHP przypisano zmiennej $a wartość 1. Porównanie $a === $b zwraca true, gdy zmienna $b ma przypisaną wartość

A. 1 lub '1'
B. '1'
C. '1' lub "1"
D. *1
Zmienna $a, zainicjowana wartością 1, jest typu integer i porównując ją z inną zmienną $b za pomocą operatora identyczności (===), należy zwrócić szczególną uwagę na typ i wartość obu zmiennych. Wiele osób myli operator porównania identyczności z operatorem równości (==), który nie wymaga, aby typy były zgodne. Z tego powodu odpowiedzi takie jak 1 lub '1' mogą wydawać się poprawne, jednak w przypadku porównania identyczności, istotne jest, aby zmienne były tego samego typu. Odpowiedź, która sugeruje wartość 1, jest błędna, ponieważ porównuje wartość integer z potencjalnie innym typem bez uwzględnienia konwersji typów, co prowadzi do niejednoznaczności. Z kolei odpowiedź sugerująca wartość '1' nie do końca zdaje sobie sprawę, że chociaż string '1' jest zgodny w kontekście równości, nie spełnia warunków identyczności w dosłownym sensie, gdyż typy są różne. Typowe błędy myślowe prowadzące do takich nieprawidłowych wniosków często wynikają z założenia, że PHP automatycznie wykonuje konwersje typów, co nie zawsze jest pożądane. Dla programistów istotne jest zrozumienie różnic między typami oraz kiedy stosować odpowiednie operatory, aby zapewnić poprawność logiki aplikacji i uniknąć potencjalnych błędów, które mogą prowadzić do trudnych do zdiagnozowania problemów w przyszłości.

Pytanie 14

Który fragment kodu stanowi zamiennik dla kodu umieszczonego w ramce?

Ilustracja do pytania
A. B
B. C
C. A
D. D
Odpowiedzi B i D są nieprawidłowe ponieważ ignorują kluczową część logiki oryginalnego kodu mianowicie filtrację parzystych liczb. Odpowiedź B iteruje przez wszystkie liczby od 1 do 55 wypisując je wszystkie bez wyjątku co diametralnie odbiega od zamierzonego wyniku kodu źródłowego. Odpowiedź D jest identyczna z B z tym że format zapisu jest nieco odmienny nie ma to jednak wpływu na logikę działania co czyni ją również błędną. Odpowiedź C inicjuje pętlę od 2 i inkrementuje x o 2 co teoretycznie powinno zbliżyć się do rozwiązania jednak zakres iteracji kończy się na 56 co wykracza poza zadany limit 55 oraz wypisuje nieistniejącą w oryginalnej pętli dodatkową liczbę co jest błędne. Wybory te mogą wynikać z niewłaściwego zrozumienia zakresu pętli lub metody przeskakiwania wartości co jest częstym błędem przy interpretacji pętli iteracyjnych. Kluczowe jest zrozumienie jak zastosowana logika i zakres wpływają na wynik końcowy oraz jak można optymalnie odwzorować te zasady w alternatywnym kodzie.

Pytanie 15

Jaką rolę pełni funkcja PHP o nazwie mysql_select_db()?

A. określić bazę, z której będą pobierane dane
B. określić tabelę, z której będą pobierane informacje
C. nawiązać połączenie bazy danych z serwerem SQL
D. pobrać dane z bazy danych na podstawie zapytania
Istnieje kilka powszechnych nieporozumień dotyczących funkcji mysql_select_db(), które mogą prowadzić do błędnych wniosków. Niewłaściwe jest myślenie, że ta funkcja służy do określenia tabeli, z której będą pobierane dane. W rzeczywistości, mysql_select_db() nie odnosi się bezpośrednio do tabel; zamiast tego, definiuje bazę, w której te tabele się znajdują. Kolejnym błędem jest przekonanie, że mysql_select_db() odpowiada za połączenie bazy danych z serwerem SQL. To zadanie należy do mysql_connect(), która tworzy połączenie z serwerem. Istnieje również mylne założenie, że funkcja ta pobiera dane z bazy danych. W rzeczywistości, pobieranie danych odbywa się za pomocą osobnych zapytań SQL, które są wykonywane po wcześniejszym wybraniu odpowiedniej bazy danych. Takie nieporozumienia mogą prowadzić do błędów w kodzie, gdzie programista usiłuje używać mysql_select_db() do operacji, które nie są jej przeznaczone. Niezrozumienie roli bazy danych i tabel w kontekście SQL oraz funkcji PHP może skutkować nieefektywnym kodem oraz problemami z jego debugowaniem. Ważne jest, aby mieć jasność co do roli różnych funkcji w interakcji z bazą danych, co pozwala na bardziej efektywne i bezpieczne programowanie.

Pytanie 16

Jakim sposobem można w języku PHP dokumentować blok komentarza składający się z wielu linii?

A. <!-- -->
B. //
C. #
D. /* */
Komentarze w języku PHP mogą być tworzone na kilka sposobów, jednak jedynie sposób wykorzystujący /* */ pozwala na zapis bloku komentarza rozciągającego się na wiele linii. Jest to szczególnie użyteczne w sytuacjach, gdy programista chce umieścić obszerniejsze wyjaśnienia dotyczące kodu, które nie ograniczają się do jednej linii. Przykładem zastosowania może być opis skomplikowanej funkcji lub sekcji kodu, gdzie istotne jest podanie kontekstu lub dodatkowych informacji. Na przykład: /* * Funkcja obliczająca sumę dwóch liczb. * Przyjmuje dwa argumenty: a oraz b. */ function suma($a, $b) { return $a + $b; } Stosowanie bloku komentarza zgodnie z tym stylem jest zgodne z najlepszymi praktykami programowania, gdyż poprawia czytelność kodu oraz ułatwia jego późniejsze utrzymanie. Z punktu widzenia standardów kodowania, szczególnie w większych projektach, dobrze opisane fragmenty kodu mogą zminimalizować ryzyko błędów oraz ułatwić pracę zespołową.

Pytanie 17

W języku PHP zmienna typu float może przyjmować wartości

A. wartości nieliczbowe
B. wartości logiczne
C. wartości zmiennoprzecinkowe
D. jedynie liczby całkowite
Wybór odpowiedzi dotyczącej całkowitych wartości jest nieprawidłowy, ponieważ zmienne typu float w języku PHP są definiowane do przechowywania liczb zmiennoprzecinkowych, a nie tylko całkowitych. Dla wielu programistów może być mylące, że wartości całkowite i zmiennoprzecinkowe są traktowane jako odrębne typy danych, a tymczasem float jest bardziej uniwersalny, pozwalając na reprezentację obu. Wybór nieliczbowych wartości także jest błędny, ponieważ zmienne float są właśnie typem numerycznym, co oznacza, że przechowują wartości liczbowe, a nie literowe czy inne typy danych. To prowadzi do mylnego przekonania, że float może przechowywać dane w postaci tekstu, co jest technicznie niemożliwe. Również odpowiedź o wartościach logicznych wykazuje zrozumienie pomiędzy różnymi typami zmiennych w PHP, gdzie typ logiczny (boolean) przyjmuje wartości true lub false, co całkowicie różni się od wartości numerycznych. Często pojawia się błąd myślowy polegający na mieszaniu pojęć numerycznych oraz logicznych, co prowadzi do zafałszowania zrozumienia działania typów danych w programowaniu. Kluczowe jest dostrzeganie różnic między tymi typami oraz ich zastosowaniem, co jest fundamentalne dla efektywnego programowania w PHP. Wreszcie, świadomość typów danych oraz ich zastosowań jest ważnym elementem w procesie pisania poprawnego kodu, co może zapobiegać błędom i ułatwiać zrozumienie działania aplikacji.

Pytanie 18

Po wykonaniu przedstawionego kodu PHP, w zmiennej $napis zostaje zapisany ciąg znaków.

$napis = "Programowanie w PHP";
$napis = substr($napis, 3, 5);
A. og
B. gramo
C. gr
D. ogram
W podanym kodzie PHP używana jest funkcja substr() która służy do wycinania fragmentu ciągu znaków. W tym przypadku mamy ciąg znaków 'Programowanie w PHP'. Funkcja substr() przyjmuje trzy argumenty: pierwszy to ciąg znaków drugi to pozycja startowa trzecia to długość wycinka. Pozycje w ciągu znaków w PHP zaczynają się od zera dlatego pozycja startowa 3 oznacza czwarty znak w ciągu co w przypadku 'Programowanie w PHP' odpowiada literze 'g'. Trzeci argument 5 oznacza że wycinamy pięć znaków zaczynając od pozycji 3. Stąd funkcja zwróci napis 'gramo'. Znajomość funkcji substr() jest przydatna w różnych sytuacjach na przykład podczas formatowania danych wejściowych lub wyodrębniania części łańcucha takich jak numery telefonów czy kody pocztowe. Ważne jest aby pamiętać że indeksowanie zaczyna się od zera co jest kluczowe przy używaniu tej funkcji. Dobre praktyki w programowaniu zalecają również traktowanie długości wycinka jako parametru opcjonalnego co umożliwia wycięcie do końca łańcucha.

Pytanie 19

Skrypt PHP wyświetla aktualny czas w formacie godzina:minuta:sekunda, na przykład 15:38:20. Czas w tym formacie zostanie uzyskany dzięki funkcji

A. time("G:m:s");
B. date("H:i:s");
C. date("G:m:s");
D. time("H:i:s");
Wybór time("H:i:s") jako metody zwracającej aktualny czas w pożądanym formacie jest błędny, ponieważ funkcja time() nie formatuje daty ani czasu. Zamiast tego, time() zwraca czas w postaci znacznika czasu (timestamp) – liczby sekund, które upłynęły od 1 stycznia 1970 roku, co jest znane jako Unix Epoch. Dlatego wywołanie time("H:i:s") nie zadziała, ponieważ ta funkcja nie akceptuje parametrów formatujących. Kolejną nieprawidłową odpowiedzią jest date("G:m:s"). Chociaż funkcja date() jest stosowana do formatowania czasu, pole 'G' zwraca godziny w 24-godzinnym formacie, ale bez wiodących zer (tak jak 'H'), co może prowadzić do niepoprawnego wyświetlania godzin mniejszych niż 10. Dodatkowo, 'm' odnosi się do miesięcy, a nie minut, co czyni to podejście błędnym we wszystkich aspektach. Wreszcie, w odpowiedzi time("G:m:s") ponownie pojawia się problem ze zrozumieniem funkcji time(), która nie jest używana do formatowania czasu, a zamiast tego służy tylko do uzyskania znacznika czasu. Typowe błędy myślowe związane z tymi odpowiedziami obejmują mylenie funkcji do pozyskiwania danych z funkcjami do ich formatowania oraz niepełne zrozumienie składni i możliwości dostępnych funkcji PHP. Rekomenduje się zawsze dokładne zapoznanie się z dokumentacją PHP oraz praktyczne testowanie funkcji w różnych scenariuszach, aby lepiej zrozumieć ich zastosowanie i ograniczenia.

Pytanie 20

W zamieszczonym kodzie PHP, zamiast znaków zapytania powinien być wyświetlony komunikat:

$x = mysql_query('SELECT * FROM mieszkancy');
if (!$x)
    echo '??????????????????????';
A. Błąd w trakcie przetwarzania zapytania
B. Zapytanie zostało poprawnie przetworzone
C. Niepoprawne hasło do bazy danych
D. Niepoprawna nazwa bazy danych
Wybór nieprawidłowej odpowiedzi wskazuje na pewne nieporozumienia związane z obsługą błędów w kontekście zapytań do bazy danych. Nieprawidłowe hasło do bazy danych oraz nieprawidłowa nazwa bazy danych dotyczą problemów, które występują w momencie próby nawiązania połączenia z bazą. W przypadku, gdy połączenie nie zostanie nawiązane, kod PHP nie dotrze do linii z zapytaniem SQL, a więc komunikat błędu w takim kontekście nie zostanie wyświetlony. Z kolei zapytanie przetworzone pomyślnie sugerowałoby, że operacja SQL została wykonana poprawnie, co jest sprzeczne z sytuacją, w której wynik funkcji mysql_query() jest fałszywy. W przypadku, kiedy zapytanie jest źle sformułowane lub odnosi się do nieistniejącej tabeli, funkcja mysql_query() zwraca fałsz, co powinno wywołać wyświetlenie komunikatu o błędzie przetwarzania zapytania. Kluczowe jest zrozumienie, że błędne interpretacje związane z połączeniem i zapytaniami mogą prowadzić do niewłaściwej diagnozy problemu. W praktyce, dobrym zwyczajem jest zawsze sprawdzanie wyników zapytań i używanie funkcji diagnostycznych, aby uniknąć nieporozumień i poprawnie zarządzać błędami w aplikacjach bazodanowych.

Pytanie 21

W języku PHP zapisano fragment kodu. Plik cookie stworzony tym poleceniem

setcookie("osoba", "Anna Kowalska", time() + (3600 * 24));
A. będzie przechowywany na serwerze przez jedną godzinę.
B. zostanie usunięty po jednej godzinie od jego utworzenia.
C. będzie przechowywany na serwerze przez jeden dzień.
D. zostanie usunięty po jednym dniu od jego utworzenia.
Widzę, że pomyślałeś, że plik cookie będzie trzymany na serwerze. To nie tak, bo wszystkie pliki cookie są przechowywane na komputerze użytkownika, a nie na serwerze. Serwer tylko korzysta z tych cookies, żeby wiedzieć, kto jest użytkownikiem i jak zarządzać sesjami. Kolejna sprawa – niektórzy myślą, że cookie wygasa po godzinie. Ale to nieprawda, bo w PHP argument wygaszenia to 3600 * 24, czyli 86400 sekund, co daje jeden dzień, a nie tylko godzinę. Te nieporozumienia mogą wynikać z braku zrozumienia funkcji setcookie() i tego, jak działają pliki cookie w webowych aplikacjach. Dobrze jest to wiedzieć, by tworzyć lepsze i bezpieczniejsze aplikacje.

Pytanie 22

W języku PHP, aby wyeliminować białe znaki na początku i końcu łańcucha znaków, należy zastosować funkcję

A. sort( )
B. time( )
C. strlen( )
D. trim( )
Funkcja trim() w języku PHP jest kluczowym narzędziem do usuwania zbędnych spacji oraz innych białych znaków z początku i końca ciągu znaków. Jest to istotne, gdyż nieprawidłowe białe znaki mogą prowadzić do błędów w przetwarzaniu danych wejściowych, np. przy porównywaniu czy zapisywaniu do bazy danych. Przykład użycia funkcji trim() może wyglądać następująco: $str = ' Hello World! '; $result = trim($str); echo $result; // Wyświetli 'Hello World!'. Warto zauważyć, że funkcja trim() działa nie tylko na spacji, ale również na tabulatorach i innych znakach białych. Z perspektywy dobrych praktyk, warto stosować trim() przed zapisem danych użytkownika w celu uniknięcia nieprzewidzianych błędów w aplikacji. W kontekście bezpieczeństwa, usuwanie niepotrzebnych spacji pomoże również w walidacji i sanitizacji danych, co jest kluczowe w kontekście ochrony przed atakami typu injection.

Pytanie 23

W języku PHP, aby nawiązać połączenie z bazą danych MySQL przy użyciu biblioteki mysqli, w poniższym zapisie w miejsce litery 'c' należy wpisać:

$a = new mysqli('b', 'c', 'd', 'e');
A. nazwa użytkownika
B. hasło dla użytkownika
C. adres serwera bazy danych
D. nazwa bazy danych
Wybór odpowiedzi dotyczącej 'nazwa bazy danych', 'hasło użytkownika' i 'lokalizacja serwera bazy danych' nie jest poprawny, bo żaden z tych elementów nie odnosi się do drugiego argumentu w konstruktorze mysqli. Zrozumienie połączeń z bazą danych jest kluczowe przy programowaniu w PHP. 'Nazwa bazy danych' to czwarty argument, więc dotyczy tego, do której bazy chcemy się podłączyć. 'Hasło użytkownika' to trzeci argument, który jest potrzebny, żeby się autoryzować. A 'lokalizacja serwera bazy danych' to pierwszy argument, który mówi, gdzie znajduje się serwer, najczęściej będzie to 'localhost', na którym działa nasza aplikacja. Błędne wnioski mogą się brać z niepełnego zrozumienia struktury połączeń w PHP.

Pytanie 24

W języku PHP chcąc wyświetlić ciąg n znaków @, należy użyć funkcji

A. function znaki($znak, $n){
   for($i = 0; $i < $n; $i++)
     print($znak);
}
znaki(@, $n);

B. function znaki($i){
   for($i = 0; $i < $n; $i++)
     print("@");
}
znaki($i);

C. function znaki($znak, $n){
   for($i = 0; $i < $n; $i++)
     print($znak);
}
znaki($n);

D. function znaki($znak, $n){
   for($i = 0; $i < $n; $i++)
     print($znak);
}
znaki("@", $n);
A. B.
B. A.
C. D.
D. C.
Wybór odpowiedzi A, B lub C sugeruje pewne nieporozumienia dotyczące działania funkcji w PHP. W PHP, aby wyświetlić ciąg n znaków, musimy użyć funkcji, która przyjmuje dwa argumenty: znak do wyświetlenia i liczbę n określającą, ile razy znak powinien zostać wyświetlony. Żadne z podejść zaproponowanych w odpowiedziach A, B lub C nie spełniają tych kryteriów. Wszystkie one wydają się pomijać istotne aspekty tworzenia funkcji, takie jak użycie odpowiednich argumentów lub prawidłowe użycie pętli. Zrozumienie, jak działa ta konkretna funkcja w PHP, może pomóc Ci zrozumieć, jak działa ten język programowania i jak używać jego funkcji do tworzenia skutecznych programów. Warto poświęcić więcej czasu na naukę tych podstaw, ponieważ są one kluczowe dla pisanie skutecznego kodu w PHP.

Pytanie 25

W aplikacji PHP do bazy danych została wysłana kwerenda SELECT przy pomocy funkcji mysqli_query. Jaką funkcję powinien wykorzystać użytkownik, aby ustalić, ile rekordów zostało zwróconych przez zapytanie?

A. mysqli_connect
B. mysqli_fetch_row
C. mysqli_num_rows
D. mysqli_query
Przy wyborze niewłaściwych funkcji jako alternatywy dla mysqli_num_rows pojawia się wiele nieporozumień dotyczących operacji na wynikach zapytań w PHP. Wybór mysqli_fetch_row sugeruje, że użytkownik mylnie zakłada, iż ta funkcja zwraca liczbę rekordów. W rzeczywistości, mysqli_fetch_row służy do pobierania kolejnych wierszy z wyniku zapytania jako tablicy, co oznacza, że do zliczenia rekordów musielibyśmy wielokrotnie wywoływać tę funkcję w pętli, co jest nieefektywne i niezgodne z zasadami optymalizacji. Z kolei mysqli_query, choć fundamentem do wykonania zapytania, nie ma funkcji zliczającej rekordy. Użytkownicy często mylą jej wydajność z funkcją zliczania, co prowadzi do nieefektywnego kodu. Funkcja mysqli_connect jest przeznaczona do nawiązywania połączenia z bazą danych, a nie do operacji na wynikach zapytań. Jest to typowy błąd nowicjuszy, którzy nie rozumieją, że użycie funkcji do zaistnienia w bazie nie ma związku ze zliczaniem rekordów. W praktyce, aby uzyskać informacje o liczbie rekordów, kluczowe jest zrozumienie, że każda z tych funkcji ma swoje zdefiniowane zadania i użycie ich w nieodpowiednich kontekstach prowadzi do nieoptymalnych rozwiązań, co jest sprzeczne z najlepszymi praktykami programowania.

Pytanie 26

Który z kodów PHP sprawi, że zostanie wyświetlona sformatowana data oraz czas ostatnich odwiedzin użytkownika witryny, natomiast podczas pierwszej wizyty nic się nie wyświetli?

Kod 1.   echo date('d.m.Y, H:i', $_COOKIE['c1']);
         setcookie('c1', time());

Kod 2.   if(isset($_COOKIE['c1']))
           echo date($_COOKIE['c1']);
         setcookie('c1', time(), time() + 30 * 86400);

Kod 3.   echo date($_COOKIE['c1']);
         setcookie('c1', time(), time() + 30 * 86400);

Kod 4.   setcookie('c1', time(), time() + 30 * 86400);
A. Kod 3.
B. Kod 1.
C. Kod 4.
D. Kod 2.
Niepoprawne kody PHP nie spełniają wymagań zadania z różnych powodów. Niektóre nie wykorzystują funkcji isset() do sprawdzenia, czy ciasteczko 'c1' istnieje, co może prowadzić do błędów, jeżeli ciasteczko nie zostało ustawione. Inne zawsze wyświetlają datę i czas ostatnich odwiedzin, nawet jeżeli jest to pierwsza wizyta użytkownika na stronie, co jest niezgodne z treścią pytania. Kolejnym błędnym podejściem jest nieaktualizowanie ciasteczka 'c1' po wyświetleniu daty i czasu ostatnich odwiedzin, co powoduje, że zawsze wyświetlana jest ta sama data i czas. Ważnym elementem pracy z ciasteczkami w PHP jest zrozumienie, jak są one zapisywane i odczytywane, a także jak można je wykorzystać do przechowywania informacji o użytkownikach. Błędy te pokazują brak zrozumienia tych kwestii.

Pytanie 27

Na podstawie przypisania wartości do zmiennych zapisanych w języku PHP można stwierdzić, że

$zmienna1 = 15;
$zmienna2 = "15";
$zmienna3 = (string) $zmienna1;
A. Wszystkie zmienne są tego samego typu.
B. zmienna1 i zmienna3 są tego samego typu.
C. zmienna2 i zmienna3 są tego samego typu.
D. zmienna1 i zmienna2 są tego samego typu.
Niestety, twoja odpowiedź była nieprawidłowa. Wydaje się, że mogła wynikać z niezrozumienia typów zmiennych w języku PHP. W tym pytaniu zmienna1 była typu int (liczba całkowita), zmienna2 była typu string (ciąg znaków), natomiast zmienna3 była wynikiem rzutowania zmiennej1 na typ string. Stąd wynika, że zmienna2 i zmienna3 są obie typu string. Natomiast zmienna1, pomimo że miała taką samą wartość jak zmienna2 i zmienna3 (15), nie była tego samego typu. W językach programowania typ danych jest ważny, szczególnie przy operacjach porównania czy połączenia różnych typów danych. PHP jest językiem o dynamicznych typach, co oznacza, że typ zmiennej może ulec zmianie w trakcie wykonania skryptu, ale mimo to warto zawsze świadomie operować na typach zmiennych.

Pytanie 28

Funkcja PHP var_dump() wyświetla informację na temat zmiennej: jej typ i wartość. Wynikiem dla przedstawionego fragmentu kodu jest:

$x = 59.85;
var_dump($x);
A. int(59)
B. float(59.85)
C. array(2) { [0]=> int(59) [1]=> int(85) }
D. string(5) "59.85"
Gratulacje, Twoja odpowiedź jest poprawna! W poprawnej odpowiedzi, wartość zmiennej $x była 59.85, co jest liczbą zmiennoprzecinkową, a więc typem tej zmiennej jest float. Funkcja PHP var_dump() służy do wyświetlania informacji o zmiennej, w tym jej typu i wartości. Zatem wynikiem jej wykonania dla zmiennej $x inicjowanej wartością 59.85 jest float(59.85). To jest jeden z przykładów, gdzie rozumienie typów danych w PHP jest kluczowe. Zrozumienie typu float pozwoli Ci na prawidłową manipulację danymi, co jest niezwykle ważne w programowaniu. Jest to szczególnie istotne, gdy porównujesz różne wartości lub przekształcasz jedne typy danych w inne. Pamiętaj, że PHP jest językiem o słabej typizacji, co oznacza, że konwersja typów może nastąpić automatycznie w niektórych kontekstach, więc zawsze warto wiedzieć, jakiego typu jest dana zmienna.

Pytanie 29

Określ wynik działania załączonego kodu PHP, przy założeniu, że zmienna tab jest tablicą.

$tab = explode(", ", "jelenie,sarny,dziki,lisy,borsuki");
echo $tab[1]." ".$tab[2];
A. lisy borsuki
B. dziki lisy
C. jelenie sarny
D. sarny dziki
Zgadza się, Twoja odpowiedź jest właściwa. W tym kodzie PHP używamy funkcji 'explode()', żeby zamienić ciąg znaków na tablicę, używając przecinków do rozdzielenia. Potem, dwa elementy z tej tablicy, czyli drugi i trzeci, są wypisywane. Wynik tego kodu będzie różny w zależności od tego, co mamy w tablicy 'tab'. Dla tego przykładu, poprawna odpowiedź to 'sarny dziki'. Możemy przypuszczać, że po użyciu 'explode()' tablica wygląda tak: ['jakiś_element', 'sarny', 'dziki', ...]. To naprawdę przydatna funkcjonalność, zwłaszcza kiedy musimy przetwarzać dane od użytkownika lub z pliku. Funkcję 'explode()' często spotykamy w PHP, gdy bawi się z ciągami, i to dobry sposób na ich manipulację.

Pytanie 30

Na podstawie przydzielenia wartości do zmiennych w języku PHP można zauważyć, że

$zmienna1 = 15;
$zmienna2 = "15";
$zmienna3 = (string) $zmienna1;
A. zmienna2 i zmienna3 mają ten sam typ.
B. zmienna1 i zmienna2 mają ten sam typ.
C. wszystkie zmienne mają ten sam typ.
D. zmienna1 i zmienna3 mają ten sam typ.
Nie do końca to jest dobre, co mówisz, bo $zmienna1 to liczba całkowita (integer), a $zmienna2 to string. Typy danych w PHP mają znaczenie, bo różnie się zachowują w trakcie działania. Liczby są liczone, a teksty traktowane jako znaki. Mimo że obie pokazują "15", to ich typy są inne, co może prowadzić do błędów. Z $zmienna1 i $zmienna3 też jest nieciekawie, bo mimo że to liczby, to jednak typy się różnią - $zmienna1 to integer, a $zmienna3 to string. Często można się w tym pogubić, zakładając, że mając te same wartości, są też tego samego typu. Jak mówisz, że trzy zmienne są takie same, to pokazujesz, że nie do końca masz jasność co do typów w PHP. Pamiętaj, żeby zwracać uwagę na rzutowanie typów, bo niedopatrzenia mogą skutkować problemami w kodzie. Rekomenduję, żeby programiści regularnie sięgać do dokumentacji i używać dobrych praktyk, by lepiej ogarnąć temat typów danych w swoich projektach.

Pytanie 31

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. string(5) "59.85"
B. array(2) { [0]=> int(59) [1]=> int(85) }
C. int(59)
D. float(59.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 32

Z którego z pól klasy

class Dane {
    public $a;
    private $b;
    protected $c;
}
będzie można uzyskać dostęp z zewnątrz przy użyciu obiektu stworzonego jako instancja tej klasy?
A. Do pola $b.
B. Do pola $c.
C. Do pola $a.
D. Do wszystkich pól.
Odpowiedź 'Do pola $a' jest prawidłowa, ponieważ pole $a jest zdefiniowane jako publiczne, co oznacza, że jest dostępne z zewnątrz dla instancji klasy oraz dla kodu, który jest poza tą klasą. W praktyce, gdy tworzysz obiekt klasy Dane, możesz łatwo uzyskać dostęp do tego pola, na przykład za pomocą $obiekt->a. Zastosowanie publicznych pól jest typowe, gdy chcesz, aby dane były szeroko dostępne, na przykład w interfejsach API lub podczas tworzenia prostych klas modelujących dane. W przypadku pól prywatnych oraz chronionych, dostęp do nich jest ograniczony. Pole $b jest prywatne, co oznacza, że może być używane tylko wewnątrz tej samej klasy, a pole $c, będące chronionym, może być używane przez klasę i jej podklasy, ale nie przez kod zewnętrzny. Warto zaznaczyć, że dobre praktyki programowania obiektowego sugerują ograniczanie dostępu do pól, co sprzyja enkapsulacji i ochronie integralności danych, a publiczne pola należy stosować z ostrożnością, aby nie naruszyć zasad projektowania systemów oprogramowania.

Pytanie 33

Poniższy fragment kodu PHP funkcjonuje poprawnie i ma na celu wyświetlenie na stronie internetowej informacji pobranych kwerendą z bazy danych. Ile pól zostanie wyświetlonych na stronie?

$ile = mysqli_num_rows($zapytanie);
for ($i = 0; $i < $ile; $i++) 
{
    $wiersz = mysqli_fetch_row($zapytanie); 
    echo "<p>Klient: $wiersz[0] $wiersz[1], adres: $wiersz[2] </p>";
}
A. Z czterech pól
B. Z trzech pól
C. Z dwóch pól
D. Z jednego pola
Wybranie niepoprawnych odpowiedzi, takich jak 'z jednego pola' czy 'z dwóch pól', może wynikać z niepoprawnego zrozumienia struktury danych zwracanych przez funkcję mysqli_fetch_row. Odpowiedzi te sugerują, że użytkownik może nie dostrzegać, że funkcja ta zwraca wszystkie kolumny z wiersza jako elementy tablicy, co ma kluczowe znaczenie w kontekście przetwarzania wyników zapytań. Odpowiedzi wskazujące na jedno lub dwa pola mogą prowadzić do błędnych wniosków, ponieważ ignorują one pełny zakres danych, które są dostępne w każdym wierszu. W praktyce, często umieszcza się w bazie danych więcej informacji, a każda kolumna odpowiada innemu atrybutowi obiektu, na przykład klienta. Dlatego jeśli zapytanie SQL zwraca trzy kolumny, to oczekiwanym wynikiem powinno być właśnie wyświetlenie tych trzech, co podkreśla istotność precyzyjnego formułowania zapytań i poprawnego odczytywania wyników. Zrozumienie struktury danych jest kluczowe dla poprawnego odczytu wyników i ich późniejszego wykorzystania, co potwierdzają standardy związane z programowaniem w PHP oraz obsługą baz danych.

Pytanie 34

Na stronie internetowej znajduje się formularz, do którego trzeba zaprogramować następujące funkcje:
– walidacja: podczas wypełniania formularza na bieżąco jest kontrolowana poprawność danych
– przesyłanie danych: po wypełnieniu formularza i jego zatwierdzeniu informacje są przesyłane do bazy danych na serwerze
Aby zrealizować tę funkcjonalność w możliwie najprostszy sposób, należy zapisać

A. walidację w języku JavaScript, a przesyłanie danych w skrypcie PHP
B. walidację i przesyłanie danych w języku JavaScript
C. walidację i przesyłanie danych w języku PHP
D. walidację w skrypcie PHP, a przesyłanie danych w JavaScript
Wybór walidacji i przesyłania danych w języku PHP jest nieefektywny w kontekście nowoczesnych aplikacji webowych. Język PHP jest używany głównie po stronie serwera i nie jest przeznaczony do walidacji danych w czasie rzeczywistym. Oczekiwanie na przesłanie formularza do serwera, aby uzyskać informację o błędach, prowadzi do nieprzyjemnych doświadczeń użytkowników. Użytkownik musi czekać na odpowiedź serwera, co może być czasochłonne i frustrujące. Ponadto, walidacja po stronie serwera może sprawić, że użytkownik straci wprowadzone dane, jeśli wystąpią błędy. To podejście nie tylko obniża użyteczność formularzy, ale także może prowadzić do większych obciążeń serwera, ponieważ każde wprowadzenie danych wymaga zaangażowania zasobów serwerowych. Implementując walidację w JavaScript, można natychmiast informować użytkownika o niewłaściwych danych, co nie tylko zaspokaja potrzeby użytkownika, ale także zmniejsza ilość niepotrzebnych zapytań do serwera. Ostatecznie, korzystanie z jednego języka do obu zadań jest sprzeczne z zasadą separacji obowiązków, co jest kluczowe w inżynierii oprogramowania. Zamiast tego, prawidłową praktyką jest wykorzystanie JavaScript do walidacji danych przed ich przesłaniem, co pozwala na znacznie bardziej responsywne i przyjazne dla użytkownika doświadczenia.

Pytanie 35

Przedstawiony kod PHP nawiązuje połączenie z serwerem bazy danych. Jakiego typu operacje powinny się znaleźć w instrukcji warunkowej w miejscu trzech kropek?

$db = mysqli_connect("localhost", "root", "qwerty", "baza1");
if (!$db) {
...
}
A. Przetwarzanie danych uzyskanych z bazy
B. Zamknięcie połączenia z bazą danych
C. Informacja o pomyślnym nawiązaniu połączenia z bazą
D. Obsługa błędu przy nawiązywaniu połączenia
Zamknięcie bazy danych w kontekście nawiązywania połączenia z bazą danych nie ma sensu, ponieważ w momencie, gdy kod wykonuje sprawdzenie połączenia, to takie połączenie nie zostało jeszcze nawiązane. Próba zamknięcia niezainicjowanego połączenia nie tylko nie przyniesie żadnego efektu, ale także może prowadzić do mylnych wniosków dotyczących kodu. Ponadto, zachowanie takie może wprowadzać w błąd, sugerując, że operacje na bazie danych mogłyby być przeprowadzone w tym momencie, co jest nieprawdziwe. Obsługa danych pobranych z bazy również nie jest właściwym podejściem w momencie, gdy połączenie nie zostało jeszcze ustanowione - przed przetwarzaniem jakichkolwiek danych, najpierw musimy upewnić się, że połączenie jest aktywne. Natomiast komunikat o pomyślnym połączeniu z bazą nie powinien być używany w instrukcji warunkowej, gdyż działa on na zasadzie potwierdzenia, a nie na detekcji błędów. Ważne jest, aby zrozumieć, że każda z tych odpowiedzi nie odpowiada na istotę problemu - w przypadku problemów z połączeniem zwłaszcza w aplikacjach produkcyjnych, brak odpowiedniego komunikatu o błędzie może prowadzić do poważnych trudności w diagnozowaniu i naprawie problemów, co może wpływać na całkowitą funkcjonalność systemu oraz jego niezawodność.

Pytanie 36

Jakie oznaczenie wykorzystuje się do jednoliniowego komentarza w skryptowym języku PHP?

A. $
B. --
C. /*
D. #
Oznaczenie jednoliniowego komentarza w języku PHP realizuje się za pomocą znaku '#'. Komentarze są niezwykle ważnym elementem kodu, ponieważ pozwalają programistom na dodawanie wyjaśnień, notatek lub przypomnień dotyczących implementacji. Umożliwiają one innym programistom (lub nawet samym sobie w przyszłości) zrozumienie kontekstu i logiki stosowanych rozwiązań. Przykładowo, można umieścić komentarz w kodzie w taki sposób: '# To jest komentarz, który wyjaśnia, co robi poniższy kod'. Warto pamiętać, że stosowanie komentarzy zgodnie z najlepszymi praktykami programowania zwiększa czytelność kodu oraz ułatwia jego utrzymanie. PHP pozwala również na stosowanie komentarzy wieloliniowych z użyciem znaków '/* ... */', jednak w przypadku komentarzy jednoliniowych preferowanym podejściem jest użycie znaku '#', szczególnie w kontekście prostych, krótkich notatek. Przykład: echo 'Hello World!'; # Ta linia wyświetla powitanie.

Pytanie 37

W PHP tablice asocjacyjne to struktury, w których

A. indeks może być dowolnym ciągiem znaków
B. są co najmniej dwa wymiary
C. w każdej pozycji tablicy znajduje się inna tablica
D. elementy tablicy są zawsze numerowane od zera
W przypadku niepoprawnych odpowiedzi, warto zwrócić uwagę na podstawowe koncepcje dotyczące tablic asocjacyjnych. Gdybyśmy uznali, że tablica asocjacyjna musi mieć przynajmniej dwa wymiary, byłoby to niezgodne z definicją, ponieważ tablice asocjacyjne w PHP mogą być jednowymiarowe. W rzeczywistości, tablica asocjacyjna to po prostu kolekcja par klucz-wartość, gdzie klucz może być unikalnym napisem, a wartość może być dowolnym typem danych. Odpowiedź sugerująca, że w każdej komórce tablicy przechowywana jest inna tablica, również jest myląca, ponieważ tablice asocjacyjne mogą przechowywać różne typy danych, a nie tylko inne tablice. Dlatego każde przechowywane dane mogą być różnorodne, co czyni je elastycznym narzędziem. Z kolei stwierdzenie, że elementy tablicy są zawsze indeksowane od liczby równej 0, odnosi się do standardowych tablic numerowanych w PHP, a nie tablic asocjacyjnych, gdzie klucze mogą przybierać różne wartości, a nie tylko liczby. Te nieporozumienia mogą prowadzić do nieefektywnego użycia tablic asocjacyjnych, co w praktyce skutkuje trudnościami w zarządzaniu danymi i ich dostępem. Aby efektywnie korzystać z tablic asocjacyjnych, kluczowe jest zrozumienie ich podstawowych właściwości oraz różnic w porównaniu do tablic numerowanych.

Pytanie 38

Informacje o ciasteczkach są przechowywane w tablicy

A. $_COOKIE
B. $_SERVER
C. $_GET
D. $_POST
Odpowiedź $_COOKIE jest prawidłowa, ponieważ to właśnie ten superglobalny zbiór w PHP przechowuje dane ciasteczek w postaci tablicy asocjacyjnej. Ciasteczka są małymi plikami danych, które są przechowywane na komputerze użytkownika przez przeglądarkę internetową. Umożliwiają one stronom internetowym przechowywanie informacji na temat sesji użytkownika, preferencji lub stanu logowania. W praktyce, aby uzyskać wartość konkretnego ciasteczka, można użyć składni $_COOKIE['nazwa_ciasteczka']. Na przykład, jeśli mamy ciasteczko o nazwie 'user', możemy uzyskać jego wartość przez $_COOKIE['user']. Warto pamiętać, że ciasteczka są limitowane do 4KB danych oraz mają różne daty wygaśnięcia, co czyni je elastycznym narzędziem do zarządzania sesjami i preferencjami użytkowników w aplikacjach webowych. Dobre praktyki mówią, aby nie przechowywać w ciasteczkach informacji wrażliwych, a zamiast tego stosować mechanizmy szyfrowania, aby zwiększyć bezpieczeństwo przechowywanych danych.

Pytanie 39

W języku PHP funkcja trim ma za zadanie

A. z obu końców napisu usuwać białe znaki lub inne znaki podane w parametrze.
B. wyznaczyć długość napisu.
C. zmniejszać napis o wskazaną w parametrze liczbę znaków.
D. porównywać dwa napisy i wypisywać część wspólną.
Poprawnie – funkcja trim() w PHP służy do usuwania z obu końców napisu tzw. znaków niechcianych, domyślnie białych znaków, czyli spacji, tabulatorów, znaków nowej linii, powrotu karetki itp. Kluczowe jest tu słowo „z końców” – trim nie rusza środka łańcucha, modyfikuje tylko początek i koniec. Składnia jest prosta: trim(string $string, string $characters = " \n\r\t\0\x0B"). Drugi parametr jest opcjonalny i pozwala samodzielnie określić zestaw znaków, które mają być usunięte. Przykład z praktyki: bardzo często po odebraniu danych z formularza stosuje się $name = trim($_POST['name']); żeby usunąć przypadkowe spacje przed i po imieniu użytkownika. Dzięki temu porównywanie napisów, walidacja czy zapisywanie do bazy danych jest bardziej przewidywalne i zgodne z dobrymi praktykami. Moim zdaniem trim to jedna z takich małych funkcji, które powinny wejść w nawyk – szczególnie przy obsłudze inputów użytkownika, importu danych z plików CSV, parsowaniu logów czy przygotowywaniu danych do serializacji. Warto też znać powiązane funkcje: ltrim() usuwa znaki tylko z lewej strony, a rtrim() (alias chop()) tylko z prawej. Dobrą praktyką jest stosowanie trim bezpośrednio po pobraniu danych z zewnętrznych źródeł, zanim zaczniemy robić jakiekolwiek porównania, zapisy do bazy czy generowanie kluczy. Pozwala to uniknąć bardzo irytujących błędów typu „ten sam użytkownik, ale inne spacje”, które potem trudno debugować. W profesjonalnych aplikacjach webowych obróbka łańcuchów, w tym właśnie trim, jest standardowym elementem warstwy walidacji i normalizacji danych wejściowych.

Pytanie 40

Efektem wykonania przedstawionego kodu PHP jest wyświetlenie komunikatu

$a = $c = true;
$b = $d = false;
if(($a && $b) || ($c && $d))
    echo 'warunek1';
elseif(($a && $b) || ($c || $d))
    echo 'warunek2';
elseif(($c && $d) || (!$a))
    echo 'warunek3';
else
    echo 'warunek4';
A. warunek1
B. warunek3
C. warunek2
D. warunek4
Poprawna jest odpowiedź „warunek2”, bo właśnie ten blok warunkowy jako pierwszy spełnia się dla zadanych wartości zmiennych. Rozbijmy to spokojnie na czynniki pierwsze. Na początku mamy przypisania: `$a = $c = true;` oraz `$b = $d = false;`. To oznacza, że `$a` i `$c` są logicznie prawdziwe, a `$b` i `$d` logicznie fałszywe. Pierwszy `if` sprawdza: `($a && $b) || ($c && $d)`. Część `$a && $b` to `true && false`, więc daje `false`. Druga część `$c && $d` to `true && false`, też `false`. Cały warunek to więc `false || false`, czyli `false`. Ten blok się nie wykona. Następnie interpreter PHP przechodzi do `elseif`: `($a && $b) || ($c || $d)`. Znowu `$a && $b` to `false`, ale teraz mamy drugą część: `$c || $d` to `true || false`, czyli `true`. Czyli cały warunek to `false || true`, czyli `true`. W tym momencie PHP wykonuje `echo 'warunek2';` i kończy sprawdzanie dalszych `elseif`/`else` – to jest bardzo ważna cecha konstrukcji `if/elseif/else`: po pierwszym spełnionym warunku reszta jest ignorowana. Praktycznie w PHP (i w innych językach C‑podobnych) takie logiczne łączenie warunków przydaje się np. przy sprawdzaniu uprawnień użytkownika: `if(($isAdmin && $isActive) || $isSuperAdmin)`. Warto pamiętać o priorytetach operatorów `&&` i `||` oraz zawsze dodawać nawiasy, kiedy chcemy jasno zaznaczyć kolejność. Z mojego doświadczenia wynika, że jawne nawiasowanie, nawet tam gdzie nie jest konieczne, zmniejsza liczbę bugów i ułatwia czytanie kodu zespołowi. Dobrą praktyką jest też upraszczanie złożonych warunków, np. przez wyciąganie fragmentów do osobnych, dobrze nazwanych zmiennych: `$hasBasicAccess = $a && $b; $hasExtendedAccess = $c || $d; if($hasBasicAccess || $hasExtendedAccess) ...`. Kod jest wtedy bardziej samodokumentujący i łatwiejszy w utrzymaniu.
{# Core JS - self-host Bootstrap bundle + wlasne skrypty. Bundlowane przez django-compressor offline mode na produkcji (refs #50). #}