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: 24 kwietnia 2026 14:40
  • Data zakończenia: 24 kwietnia 2026 14:45

Egzamin zdany!

Wynik: 38/40 punktów (95,0%)

Wymagane minimum: 20 punktów (50%)

Pochwal się swoim wynikiem!
Szczegółowe wyniki:
Pytanie 1

W PHP, aby połączyć się z bazą danych MySQL przy użyciu biblioteki mysqli, w zapisie zamieszczonym poniżej, w miejscu litery 'c' powinno się wpisać

Ilustracja do pytania
A. hasło użytkownika
B. nazwę bazy danych
C. nazwę użytkownika
D. lokalizację serwera bazy danych
W języku PHP używając biblioteki mysqli do połączenia z bazą danych MySQL, jako drugi argument funkcji mysqli należy podać nazwę użytkownika. Konstruktor mysqli przyjmuje pięć głównych argumentów: lokalizację serwera, nazwę użytkownika, hasło użytkownika, nazwę bazy danych oraz opcjonalne port i socket. Nazwa użytkownika jest kluczowa, ponieważ określa, który użytkownik bazy danych będzie używany do połączenia. Najczęściej używanym użytkownikiem przy lokalnych połączeniach testowych jest 'root', ale w środowiskach produkcyjnych stosuje się bardziej restrykcyjne podejście, tworząc dedykowane konta z ograniczonymi uprawnieniami dostępowymi. Korzystając z odpowiednich danych uwierzytelniających, można także lepiej logować działania i zarządzać prawami dostępu. Dobra praktyka wymaga, aby hasło było przechowywane bezpiecznie, np. w plikach konfiguracyjnych poza dostępem zewnętrznym, a dane użytkownika zawsze były szyfrowane przy przesyłaniu. Znajomość poprawnej konfiguracji połączenia z bazą danych jest kluczowa dla bezpieczeństwa i wydajności aplikacji.

Pytanie 2

W PHP konstrukcja foreach stanowi rodzaj

A. pętli, wyłącznie dla elementów tablicy
B. wyboru, dla elementów tablicy
C. pętli, niezależnie od typu zmiennej
D. warunkową, niezależnie od typu zmiennej
Pętla foreach w PHP to taki fajny sposób, żeby przejść przez wszystkie elementy tablicy. Została stworzona, żeby programiści mogli łatwiej ogarnąć przetwarzanie danych w tablicach, które są super ważnym typem danych w tym języku. Dzięki foreach można w prosty sposób dostać się do każdego elementu tablicy, bez zabawy w indeksy, co sprawia, że kod jest bardziej przejrzysty. Działa to tak: dla każdego elementu w tablicy robimy coś tam, co czyni ją świetnym narzędziem do pracy z większą ilością danych. Na przykład, można stworzyć tablicę z imionami i potem za pomocą foreach wypisać je na ekran. Fajnie jest też wiedzieć, że foreach nie zadziała z innymi typami danych, więc to ograniczenie, o którym trzeba pamiętać. W PHP używa się tej instrukcji na co dzień, co pokazuje, jak bardzo jest przydatna i jak bardzo ułatwia życie programistom.

Pytanie 3

Interpreter PHP zgłosi błąd i nie zrealizuje kodu, jeśli programista

A. nie umieści średnika po wyrażeniu w instrukcji if, jeśli po nim występuje sekcja else
B. będzie definiował zmienne w obrębie warunku
C. pobierze wartość z formularza, w którym pole input nie zostało wypełnione
D. będzie pisał kod bez odpowiednich wcięć
W języku PHP, średnik jest traktowany jako znak końca instrukcji. W przypadku, gdy po wyrażeniu w instrukcji 'if' następuje sekcja 'else', programista musi upewnić się, że poprawnie zakończył instrukcję 'if' średnikiem. W przeciwnym razie, interpreter PHP nie będzie w stanie poprawnie zinterpretować kodu, co prowadzi do błędu składniowego. Przykład: 'if ($a > $b) echo 'a jest większe'; else echo 'b jest większe';' jest poprawny, ponieważ średnik znajduje się po instrukcji 'if'. Jednak, jeśli napiszemy 'if ($a > $b) echo 'a jest większe' else echo 'b jest większe';', to zaowocuje to błędem, ponieważ brak średnika prowadzi do niejednoznaczności w interpretacji. Standardy PHP wymagają, aby każda instrukcja była zakończona średnikiem, co jest kluczowym elementem składni tego języka.

Pytanie 4

$n = '[email protected]'; $dl = strlen($n); $i = 0; while ($i < $dl && $n[$i] != '@') {     echo $n[$i];     $i++; } Fragment kodu w języku PHP wyświetli

A. wyłącznie nazwę konta, czyli 'adres'
B. nazwę konta z znakiem @, czyli 'adres@'
C. cały adres e-mail, czyli '[email protected]'
D. tylko nazwę domeny, czyli 'host.pl'
W przedstawionym kodzie PHP zmienna $n przechowuje adres e-mail '[email protected]'. Funkcja strlen($n) zwraca długość tego ciągu, co w tym przypadku wynosi 14. Pętla while iteruje przez znaki ciągu, aż napotka znak '@' lub do końca ciągu. W każdej iteracji pętli, znak aktualnej pozycji jest wypisywany. Pętla zaczyna od indeksu 0 i sprawdza każdy znak, aż do momentu, gdy napotka znak '@'. W wyniku działania pętli, wypisywane są tylko znaki przed '@', co w tym przypadku oznacza nazwę konta, czyli 'adres'. Aby lepiej zrozumieć to działanie, warto postawić przed sobą praktyczny przykład. Jeśli zmienimy zmienną $n na '[email protected]', kod wypisze 'test', co potwierdza, że pętla działa zgodnie z zamierzeniem, wypisując wyłącznie część przed znakiem '@'. Technicznie, zmienne tablicowe w PHP mogą być indeksowane za pomocą operatora kwadratowego, co jest wykorzystywane w tym przypadku do dostępu do poszczególnych znaków ciągu, co jest typowe w programowaniu z użyciem PHP i stringów. W kontekście standardów, kod przestrzega zasady oddzielania nazwy użytkownika od domeny w adresie e-mail, co jest kluczowe dla jego poprawnego działania.

Pytanie 5

Które z wymienionych stwierdzeń na temat zasad programowania w PHP jest prawdziwe?

A. Jest to język z ograniczoną kontrolą typów
B. Nazwy zmiennych poprzedza znak !
C. Zmienna deklarowana jest po słowie var
D. W nazwach zmiennych wielkość liter nie ma znaczenia
PHP, czyli Hypertext Preprocessor, to język skryptowy o słabej kontroli typów, co oznacza, że nie wymaga od programisty jawnego deklarowania typów zmiennych. Dzięki temu programiści mogą tworzyć elastyczny i dynamiczny kod, w którym zmienne mogą przechowywać różne typy danych w trakcie działania programu. Na przykład, zmienna, która pierwotnie przechowuje liczbę całkowitą, może później przyjąć wartość tekstową bez konieczności konwersji. Przykład takiego zachowania można zobaczyć w poniższym kodzie: $variable = 10; $variable = 'tekst';. W pierwszym przypadku zmienna przechowuje liczbę całkowitą, a w drugim ciąg tekstowy. To podejście ułatwia szybkość prototypowania, ale może prowadzić do błędów w czasie wykonywania, które są trudne do zdiagnozowania. Warto również zwrócić uwagę, że PHP, w wersji 7 i wyższych, wprowadził opcjonalne deklaracje typów, co pozwala na większą kontrolę w przypadku bardziej złożonych aplikacji. Mimo to, głównym założeniem pozostało, że programiści mają swobodę w doborze typów, co jest kluczowe dla dynamizmu PHP.

Pytanie 6

Funkcja napisana w PHP ma na celu

Ilustracja do pytania
A. zabezpieczenie bazy danych
B. nawiązanie połączenia z bazą danych
C. pobranie informacji z bazy danych
D. ustawienie hasła do bazy danych
Funkcja mysql_query z języka PHP jest używana do wykonywania zapytań SQL w bazie danych MySQL. W przedstawionym przykładzie zapytanie SELECT * FROM napisy pobiera wszystkie rekordy z tabeli o nazwie napisy. Jest to klasyczne zapytanie używane do uzyskania danych z bazy danych co czyni je podstawowym narzędziem programisty PHP operującego na bazach danych. Zwrócone dane mogą następnie być przetwarzane wyświetlane lub używane w dalszych operacjach aplikacji. Ważnym aspektem pracy z bazami danych jest ochrona przed atakami SQL Injection co można osiągnąć poprzez stosowanie przygotowanych wyrażeń lub funkcji takich jak mysqli_prepare. Warto też pamiętać że funkcja mysql_query jest przestarzała i niezalecana w nowych projektach a zamiast niej powinno się używać mysqli lub PDO. Obie te biblioteki oferują większe bezpieczeństwo i lepszą obsługę błędów co jest zgodne z aktualnymi standardami w branży. Praca z danymi wymaga nie tylko ich pobierania ale także odpowiedniego zarządzania czym zajmują się bardziej złożone mechanizmy jak ORM-y co upraszcza pracę z bazami danych i zwiększa czytelność kodu.

Pytanie 7

W języku PHP zamieszczono fragment kodu. Plik cookie utworzony przez to polecenie

setcookie("osoba", "Anna Kowalska", time()+(3600*24));
A. będzie przechowywany na serwerze przez jeden dzień
B. zostanie usunięty po jednym dniu od jego utworzenia
C. będzie przechowywany na serwerze przez jedną godzinę
D. zostanie usunięty po jednej godzinie od jego utworzenia
W odpowiedzi na pytanie, poprawna interpretacja fragmentu kodu PHP zawartego w funkcji setcookie jest kluczowa dla zrozumienia działania ciasteczek w aplikacjach webowych. W analizowanym kodzie, funkcja setcookie została użyta do utworzenia pliku cookie o nazwie 'osoba' z wartością 'Anna Kowalska'. Kluczowym elementem jest parametr czasowy, który jest obliczany jako time() + 3600 * 24. Funkcja time() zwraca aktualny znacznik czasu, a 3600 * 24 to liczba sekund w jednym dniu (3600 sekund w godzinie razy 24 godziny). To oznacza, że plik cookie będzie ważny przez 24 godziny od momentu jego utworzenia, co w praktyce oznacza, że zostanie usunięty automatycznie po upływie jednego dnia. Ważnością ciasteczek zarządzają przeglądarki, które automatycznie usuwają pliki cookie po upływie ustalonego czasu. Praktycznym zastosowaniem cookies jest np. pamiętanie o zalogowaniu użytkownika, co umożliwia płynne korzystanie z serwisów bez konieczności ciągłego logowania. Dobrą praktyką jest jednak informowanie użytkowników o stosowaniu cookies w aplikacjach webowych, co jest zgodne z regulacjami o ochronie danych osobowych.

Pytanie 8

W języku PHP do zmiennej a przypisano tekst, w którym słowo Kowalski pojawia się wielokrotnie. Aby jednym poleceniem zamienić wszystkie wystąpienia słowa Kowalski na słowo Nowak, trzeba użyć polecenia

A. $a = str_rep('Kowalski','Nowak',$a);
B. $a = str_replace('Nowak','Kowalski');
C. $a = str_replace('Nowak', 'Kowalski',$a);
D. $a = str_replace('Kowalski','Nowak',$a);
Odpowiedź jest prawidłowa, ponieważ funkcja str_replace w PHP jest przeznaczona do zastępowania wszystkich wystąpień określonego ciągu znaków innym ciągiem w danym tekście. W tym przypadku, używając str_replace('Kowalski','Nowak',$a), zmieniamy każde wystąpienie słowa 'Kowalski' na 'Nowak' w zmiennej a. Działa to dla wszystkich instancji, co czyni to podejście bardzo efektywnym w przypadkach, gdy musimy dokonać masowych zmian w tekstach. Jest to dobra praktyka, aby używać str_replace do takich operacji, ponieważ jest to funkcja wbudowana, zoptymalizowana pod kątem wydajności i czytelności kodu. Warto również pamiętać, że pierwszym parametrem jest ciąg, który chcemy zastąpić, drugim jest ciąg, na który go zamieniamy, a trzecim jest tekst, w którym dokonujemy zmiany. Zastosowanie tej funkcji jest powszechne w wielu zastosowaniach, na przykład w systemach CMS, gdzie często zachodzi potrzeba masowej edycji treści.

Pytanie 9

Określ rezultat działania podanego kodu PHP, jeśli zmienna tab jest tablicą. ```$tab = explode(",","jelenie,sarny,dziki,lisy,borsuki"); echo $tab[1]." ".$tab[2];```

A. sarny dziki
B. jelenie sarny
C. dziki lisy
D. lisy borsuki
Wynik działania tego kodu PHP to 'sarny dziki'. Dzieje się tak dzięki funkcji explode oraz indeksom tablicy. Funkcja explode dzieli tekst na kawałki według separatora, który w tym przypadku to przecinek. Więc, kiedy zastosujemy ją na ciągu 'jelenie,sarny,dziki,lisy,borsuki', dostaniemy tablicę, gdzie indeks 0 to 'jelenie', indeks 1 to 'sarny', indeks 2 to 'dziki', indeks 3 to 'lisy', a indeks 4 to 'borsuki'. Potem, polecenie echo wyświetla wartości z indeksów 1 i 2, które mają 'sarny' oraz 'dziki'. To całkiem praktyczne w programowaniu, zwłaszcza gdy przerabiamy i manipulujemy danymi tekstowymi. Dzięki explode łatwo dzielimy dane na mniejsze kawałki, co przydaje się w różnych sytuacjach, jak analiza danych czy robienie formularzy, a nawet w pracy z plikami CSV.

Pytanie 10

Aby aplikacja PHP mogła nawiązać połączenie z bazą danych, konieczne jest najpierw użycie funkcji o nazwie

A. mysqli_select_db
B. mysqli_close
C. mysqli_create_db
D. mysqli_connect
Funkcja mysqli_connect jest kluczowym elementem w procesie komunikacji aplikacji PHP z bazą danych. Jej głównym zadaniem jest nawiązanie połączenia z serwerem MySQL, co jest niezbędne, zanim jakiekolwiek operacje na danych mogą zostać przeprowadzone. Wywołując tę funkcję, należy podać odpowiednie parametry: nazwę hosta (zazwyczaj 'localhost'), nazwę użytkownika, hasło oraz nazwę bazy danych, z którą chcemy pracować. Na przykład: $conn = mysqli_connect('localhost', 'user', 'password', 'database');. Dobrą praktyką jest również sprawdzenie, czy połączenie zostało nawiązane poprawnie, co można zrobić za pomocą odpowiednich warunków. W przypadku ewentualnych błędów podczas nawiązywania połączenia, funkcja ta zwraca wartość false, co umożliwia dalsze działania naprawcze. Dodatkowo, w kontekście bezpieczeństwa, warto stosować techniki takie jak przygotowywanie zapytań (prepared statements), aby zminimalizować ryzyko ataków typu SQL Injection. Właściwe nawiązanie połączenia z bazą danych jest fundamentem każdej aplikacji webowej opartej na PHP.

Pytanie 11

W języku PHP funkcja trim służy do

A. Redukowania długości tekstu o określoną w parametrze liczbę znaków
B. Usuwania białych znaków lub innych znaków wymienionych w parametrze z obu końców tekstu
C. Określania długości tekstu
D. Porównywania dwóch tekstów i wyświetlania ich wspólnej części
Funkcja trim w języku PHP jest niezwykle użyteczna, ponieważ jej głównym zadaniem jest usuwanie białych znaków oraz innych znaków, które zostaną określone w parametrze, z obu końców łańcucha tekstowego. Oznacza to, że gdy mamy do czynienia z danymi wejściowymi, które mogą zawierać niepotrzebne spacje lub znaki specjalne na początku i końcu, funkcja trim pozwala na ich łatwe oczyszczenie. Przykładowo, jeśli mamy zmienną $text = ' Hello World! ', to wywołanie trim($text) zwróci 'Hello World!'. To podejście jest zgodne z dobrymi praktykami w programowaniu, gdzie ważne jest, aby dane były poprawnie sformatowane przed dalszym przetwarzaniem. Użycie funkcji trim może być szczególnie istotne w kontekście walidacji danych użytkownika, a także przy przetwarzaniu danych z formularzy HTML, gdzie niewłaściwe spacjowanie może prowadzić do błędów w logice aplikacji. Dodatkowo, trim może przyjmować drugi parametr, który pozwala na usunięcie konkretnych znaków, co daje programiście jeszcze większą elastyczność w manipulacji łańcuchami tekstowymi.

Pytanie 12

Określ rezultat wykonania skryptu stworzonego w języku PHP

Ilustracja do pytania
A. A
B. D
C. C
D. B
Odpowiedź A jest prawidłowa, ponieważ funkcja asort() w PHP sortuje tablicę asocjacyjną według wartości w porządku rosnącym, ale zachowuje oryginalne klucze. W tym przypadku mamy tablicę z wartościami tekstowymi. Funkcja asort() posortuje te wartości alfabetycznie, co oznacza, że najpierw pojawi się 'Perl', następnie 'PHP', 'Pike' i na końcu 'Python'. Klucze zostaną przypisane do odpowiednich wartości, co jest widoczne w odpowiedzi A. Użycie asort() jest bardzo przydatne, gdy chcemy zachować związki między kluczami i wartościami w tablicach asocjacyjnych, jednocześnie sortując je według wartości. Dobrą praktyką jest używanie tej funkcji w sytuacjach, gdzie klucze mają znaczenie, takie jak przetwarzanie danych konfiguracyjnych lub wyników ankiet. Dodatkowo, rozumienie różnic między funkcjami sortującymi w PHP jak sort(), asort(), ksort(), usort(), uasort() i uksort() jest kluczowe w efektywnym manipulowaniu danymi w skryptach PHP, pozwalając na precyzyjną kontrolę nad strukturami danych i ich porządkowaniem.

Pytanie 13

W języku PHP pętla umieści liczby w tablicy

$x=0;
for($i=0; $i<10; $i++)
{
    $tab[$i]=$x;
    $x=$x+10;
}
A. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
B. 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
C. 0, 10, 20, 30, 40, 50, 60, 70, 80, 90
D. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Pętla w języku PHP przedstawiona w kodzie używa zmiennej $x, która początkowo jest ustawiona na 0. Pętla for inicjalizuje zmienną $i na 0 i wykonuje się dopóki $i jest mniejsze od 10, inkrementując $i o 1 przy każdym obiegu. Wewnątrz pętli, do tablicy $tab dla indeksu $i przypisywana jest obecna wartość $x, która następnie jest zwiększana o 10. Dzięki temu w wyniku działania pętli wartości przypisywane do tablicy to 0, 10, 20, 30, 40, 50, 60, 70, 80, 90. To podejście jest zgodne z dobrą praktyką iteracyjnego budowania tablicy w oparciu o logiczną sekwencję wartości. Takie rozwiązanie jest przydatne w sytuacjach, gdzie potrzebujemy stworzyć serię danych np. przy generowaniu serii zdarzeń czasowych czy też w programach finansowych do obliczeń w stałych odstępach. Wykorzystywanie pętli do wypełniania tablicy wartościami sekwencyjnymi w oparciu o ustalony krok jest powszechne w wielu zastosowaniach programistycznych i jest przykładem efektywnego zarządzania danymi w pamięci.

Pytanie 14

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 15

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

A. if (mysql_connect_error())()
B. if {mysqli_connect_error()}{}
C. if (mysqli_connect_errno()){}
D. if {mysql_connect_errno()}{}
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 16

Przygotowano fragment kodu PHP z zadeklarowaną zmienną tablicową. Jaki wynik zostanie wyświetlony jako imię po wykonaniu tego kodu?

$imiona = array('Anna', 'Tomasz', 'Krzysztof', 'Aleksandra');
echo $imiona[2];
A. Aleksandra
B. Krzysztof
C. Tomasz
D. Anna
Odpowiedź Krzysztofa jest całkiem trafna, bo w PHP zaczynamy liczenie od zera. Czyli mamy pierwszy element na pozycji 0, drugi na 1, a trzeci na 2. W tym przypadku zmienna imiona to tablica z czterema elementami: 'Anna', 'Tomasz', 'Krzysztof' oraz 'Aleksandra'. Gdy używamy echo $imiona[2], to tak naprawdę sięgamy po trzeci element, czyli 'Krzysztofa'. Zasada indeksowania od zera jest właściwie standardem w wielu językach programowania, jak C, JavaScript czy Python. Dzięki temu PHP staje się bardziej spójne z innymi językami. To pozwala lepiej zarządzać danymi w kodzie, bo każdy element ma swój unikalny indeks. Ważne jest, żeby to zapamiętać, bo dzięki temu można unikać błędów, które wynikają z niewłaściwego dostępu do elementów tablic. No i lepiej wiedzieć, że wykraczający indeks może prowadzić do różnych problemów, więc warto zrozumieć to zagadnienie.

Pytanie 17

W zamieszczonym kodzie PHP, który łączy się z serwerem bazy danych, jakie działania powinny być umieszczone w instrukcji warunkowej w miejscu trzech kropek?

$db = mysqli_connect("localhost","root","qwerty","baza1");
if ( !$db ) {
...
}
A. Przetwarzanie danych otrzymanych z bazy
B. Informacja o udanym połączeniu z bazą
C. Zarządzanie błędem połączenia
D. Zamknięcie połączenia z bazą danych
W przypadku nawiązywania połączenia z bazą danych kluczowym aspektem jest sprawdzenie czy połączenie zostało nawiązane pomyślnie. W PHP funkcja mysqli_connect() zwraca false w przypadku nieudanego połączenia dlatego pierwszym krokiem po jej użyciu powinno być sprawdzenie czy połączenie zostało zainicjowane poprawnie. W sytuacji gdy połączenie nie powiedzie się należy wykonać odpowiednie czynności obsługi błędu. Najczęściej stosowaną praktyką jest wyświetlenie użytkownikowi komunikatu o błędzie oraz zapisanie szczegółów błędu do logów systemowych co umożliwia późniejszą diagnostykę problemu. Można to zrealizować za pomocą funkcji mysqli_connect_error() która zwraca szczegóły błędu połączenia. Obsługa błędów na tym etapie jest zgodna z dobrymi praktykami programistycznymi i pomaga zapobiegać sytuacjom w których aplikacja działałaby w sposób nieprzewidywalny lub nieefektywny. Prawidłowe zarządzanie błędami połączenia jest niezbędne do tworzenia stabilnych i bezpiecznych aplikacji internetowych. Ponadto pozwala na wczesne wykrycie problemów konfiguracyjnych takich jak nieprawidłowe dane logowania czy brak dostępu do serwera bazy danych.

Pytanie 18

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

A. TRUE
B. FALSE
C. NULL
D. 0
Funkcja empty($a) w języku PHP zwraca TRUE, gdy zmienna $a jest uznawana za pustą. Zgodnie z definicją, pustą wartość w PHP mają zmienne, które są równoważne FALSE, co obejmuje m.in. wartość 0, pusty string, NULL oraz pustą tablicę. W przypadku, gdy zmienna $a przyjmuje wartość liczbową równą 0, funkcja empty() zwróci TRUE, ponieważ 0 jest interpretowane jako wartość uznawana za pustą. To zachowanie jest zgodne z zasadami silnej typizacji w PHP, które pozwalają na dynamiczne sprawdzanie typów zmiennych. W praktyce, funkcję empty() można wykorzystać do walidacji danych wejściowych, na przykład w formularzach, gdzie istotne jest, aby użytkownik wprowadził wartość. Zamiast porównywać zmienną z różnymi pustymi wartościami, wywołanie empty() pozwala na bardziej zwięzły i czytelny kod. Warto również pamiętać, że empty() nie generuje ostrzeżeń w przypadku nieistniejącej zmiennej, co czyni ją bezpieczniejszym wyborem niż inne metody sprawdzania wartości.

Pytanie 19

Na stronie www znajduje się formularz, do którego należy stworzyć następujące funkcje: walidacja: w czasie wypełniania formularza na bieżąco kontrolowana jest poprawność danych, przesyłanie danych: po zrealizowaniu formularza i jego zatwierdzeniu, dane są przekazywane do bazy danych na serwerze. Aby zrealizować tę funkcjonalność w jak najprostszy sposób, należy zapisać

A. walidację w języku JavaScript, a przesyłanie danych w skrypcie PHP
B. walidację oraz przesyłanie danych w języku JavaScript
C. walidację w skrypcie PHP, a przesyłanie danych w JavaScript
D. walidację oraz przesyłanie danych w języku PHP
Walidacja danych w formularzu powinna być przeprowadzana po stronie klienta, co oznacza, że najwłaściwszym rozwiązaniem jest wykorzystanie języka JavaScript. Taki sposób umożliwia natychmiastowe informowanie użytkownika o błędach, co znacząco poprawia doświadczenia użytkowników. Przykłady zastosowania obejmują sprawdzanie, czy pola są puste, czy wprowadzony adres e-mail ma odpowiedni format oraz czy hasło spełnia określone kryteria. Po zatwierdzeniu formularza, dane powinny być przesyłane do serwera, gdzie można je obsłużyć i zapisać w bazie danych. W tym kontekście wykorzystanie języka PHP jest idealnym rozwiązaniem, ponieważ PHP jest popularnym językiem skryptowym do obsługi backendu i pracy z bazami danych. Serwerowa walidacja danych jest również konieczna dla zapewnienia bezpieczeństwa i integralności danych znajdujących się w bazie. W praktyce, mogą wystąpić sytuacje, w których użytkownik wyłączy JavaScript, dlatego niezbędne jest, aby walidacja odbywała się również po stronie serwera, jednak głównym celem jest zapewnienie wstępnej walidacji na poziomie klienta.

Pytanie 20

Funkcją zaprezentowanego kodu PHP jest napełnienie tablicy $tab 10 losowymi liczbami z przedziału od -100 do 100, a następnie wypisanie liczb ujemnych. Kod prezentuje się następująco:

$tab = array();
for ($i = 0; $i < 10; $i++)
{
    $tab[$i] = rand(-100, 100);
}

foreach ($tab as $x)
{
    if ($x < 0)
        echo "$x ";
}
A. kolejnymi liczbami od -100 do 100 oraz wypisanie liczb ujemnych
B. kolejnymi liczbami od 0 do 9 i ich wyświetlenie
C. 100 losowymi liczbami, a następnie wypisanie liczb dodatnich
D. 10 losowymi wartościami, a następnie wypisanie liczb ujemnych
Przedstawiony kod w języku PHP ma na celu wypełnienie tablicy dziesięcioma losowymi wartościami i wypisanie tych, które są ujemne. Funkcja rand(-100, 100) generuje liczby losowe z zakresu od -100 do 100. W pętli for wykonujemy dziesięć iteracji, co umożliwia dodanie dziesięciu takich liczb do tablicy. Następnie, za pomocą pętli foreach, iterujemy przez wszystkie elementy tablicy. Instrukcja warunkowa if sprawdza, czy każda z wartości jest mniejsza od zera. Jeśli warunek jest spełniony, liczba jest wypisywana na ekran. Takie podejście jest często stosowane w programowaniu, gdy wymagana jest praca z losowymi danymi w celu testowania lub symulacji. W praktycznych zastosowaniach można użyć tej metody do filtrowania danych lub analizy wyników eksperymentalnych, gdzie konieczne jest zidentyfikowanie i obsługa wartości o określonych właściwościach. Dobre praktyki programistyczne nakazują dokumentowanie takich fragmentów kodu, aby ułatwić zrozumienie i utrzymanie projektu przez innych deweloperów.

Pytanie 21

Jeżeli zmienna $x zawiera dowolną dodatnią liczbę naturalną, to przedstawiony kod źródłowy PHP ma na celu wyświetlenie:

$licznik = 0;
while ($licznik != $x)
{
    echo $licznik;
    $licznik++;
}
A. kolejnych liczb od 0 do x-1
B. losowych liczb z zakresu (0, x)
C. kolejnych liczb od x do 0
D. liczb wprowadzanych z klawiatury, aż do momentu wprowadzenia wartości x
Kod źródłowy przedstawiony w pytaniu implementuje prostą pętlę while w języku PHP która ma za zadanie wyświetlić kolejne liczby począwszy od 0 aż do liczby mniejszej od wartości zmiennej $x. Inicjalizowana jest zmienna $licznik z wartością 0 i pętla wykonuje się tak długo jak długo $licznik jest różny od $x. W każdym przebiegu pętli zmienna $licznik jest wyświetlana, a następnie zwiększana o 1. Dzięki temu wyświetlane są wartości od 0 do x-1 co jest zgodne z drugą odpowiedzią w pytaniu. Jest to klasyczna struktura sterująca która pozwala na iterację po skończonej liczbie elementów. Takie podejście jest zgodne ze standardami pisania kodu, gdzie pętle sterowane są warunkami zależnymi od zmiennych kontrolnych. W praktyce zastosowanie takiej pętli może obejmować iterację po tablicach w celu przetwarzania danych. Ważne jest aby dobrze określić warunek zakończenia pętli by uniknąć błędów nieskończonych pętli które mogą prowadzić do przestoju aplikacji. Dla optymalizacji i czytelności kodu ważne jest też stosowanie odpowiednich nazw zmiennych co ułatwia zrozumienie ich funkcji w kodzie.

Pytanie 22

Jakim poleceniem można uzyskać konfigurację serwera PHP, w tym dane takie jak: wersja PHP, system operacyjny serwera oraz wartości przedefiniowanych zmiennych?

A. phpcredits();
B. phpinfo();
C. echo phpversion();
D. print_r(ini_get_all());
Funkcja phpinfo() jest standardowym narzędziem w PHP, które dostarcza szczegółowych informacji o konfiguracji serwera oraz wersji PHP, która jest aktualnie używana. Wywołanie tej funkcji generuje stronę HTML z informacjami o ustawieniach PHP, w tym o zainstalowanych rozszerzeniach, włączonych opcjach oraz wartości przedefiniowanych zmiennych. Dodatkowo, phpinfo() prezentuje szczegóły dotyczące środowiska serwera, takie jak system operacyjny, serwer WWW oraz zmienne środowiskowe. Praktycznie, jest to niezwykle przydatne narzędzie dla programistów oraz administratorów serwerów, które umożliwia szybkie zdiagnozowanie problemów z konfiguracją czy identyfikację, które rozszerzenia PHP są dostępne. W kontekście bezpieczeństwa najlepiej jest używać tej funkcji tylko w środowisku developerskim lub lokalnym, aby uniknąć wycieku szczegółowych informacji o serwerze na produkcji. Zgodnie z najlepszymi praktykami, po zakończeniu diagnostyki, powinno się dezaktywować dostęp do tego typu informacji.

Pytanie 23

Instrukcja języka PHP tworząca obiekt pkt dla zdefiniowanej w ramce klasy Punkt ma postać

class Punkt {  public $x;
                public $y;  }
A. Punkt() pkt;
B. pkt Punkt();
C. pkt = new Punkt();
D. pkt Punkt;
Twoja odpowiedź jest prawidłowa, gratuluję! W języku PHP, aby utworzyć nowy obiekt klasy, używamy słowa kluczowego 'new', a następnie nazwy klasy. Poprawna instrukcja, która tworzy obiekt 'pkt' klasy 'Punkt', ma więc postać '$pkt = new Punkt();'. Tę konstrukcję używamy, kiedy chcemy utworzyć nową instancję klasy. Warto pamiętać, że można tworzyć wiele obiektów tej samej klasy, a każdy z nich będzie miał własny zestaw danych (właściwości). Instancje klas są podstawą programowania obiektowego, które pozwala na tworzenie bardziej złożonych i łatwiejszych do zarządzania systemów. Dobre zrozumienie tego konceptu jest kluczowe dla efektywnego programowania w PHP.

Pytanie 24

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 jeden dzień.
B. zostanie usunięty po jednej godzinie od jego utworzenia.
C. zostanie usunięty po jednym dniu od jego utworzenia.
D. będzie przechowywany na serwerze przez jedną godzinę.
Odpowiedź, którą zaznaczyłeś, to 'zostanie usunięty po jednym dniu od jego utworzenia'. W PHP działa to tak, że funkcja setcookie() bierze pod uwagę czas, po jakim cookie ma wygasnąć. To jest dodawane do aktualnego czasu, który dostajemy z funkcji time(). Kiedy widzisz wartość 3600 * 24, to znaczy, że mamy tu 86400 sekund, a to dokładnie jeden dzień. Czyli cookie zniknie z przeglądarki po upływie doby od założenia. Wydaje mi się, że to ważna sprawa, bo dobrze wiedzieć, jak działa cykl życia cookies w PHP. Pomoże to w ogarnianiu sesji i dbaniu o bezpieczeństwo w aplikacjach internetowych.

Pytanie 25

W języku PHP zapisano fragment kodu działającego na bazie MySQL. Jego zadaniem jest wypisanie

$z = mysqli_query($db, "SELECT ulica, miasto, kod_pocztowy FROM adresy");
$a = mysqli_fetch_row($z);
echo "$a[1], $a[2]";
A. miasta i kodu pocztowego z pierwszego zwróconego rekordu.
B. ulicy i miasta z pierwszego zwróconego rekordu.
C. miasta i kodu pocztowego ze wszystkich zwróconych rekordów.
D. ulicy i miasta ze wszystkich zwróconych rekordów.
Brawo, wybrałeś prawidłową odpowiedź. Twój fragment kodu PHP wykonuje zapytanie SQL, które wybiera kolumny 'ulica', 'miasto', 'kod_pocztowy' z tabeli 'adresy'. Następnie używasz funkcji mysqli_fetch_row(), która pobiera pierwszy zwrócony rekord jako indeksowaną tablicę. Funkcja echo wyświetla drugi i trzeci element tej tablicy (indeksy 1 i 2), które odpowiadają kolumnom 'miasto' i 'kod pocztowy'. To jest standardową praktyką w PHP, aby uzyskać dane z pierwszego zwróconego rekordu. Możesz zastosować tę wiedzę do tworzenia skomplikowanych zapytań SQL lub do tworzenia różnego rodzaju aplikacji webowych, które potrzebują interakcji z bazą danych.

Pytanie 26

Podany kod źródłowy ma na celu pokazanie

$liczba = 1;
while ($liczba != 0)
{
  $liczba = rand(0, 100);
  echo $liczba;
}
A. liczby wprowadzane z klawiatury do momentu, gdy wczytana zostanie wartość 0
B. losowe liczby od 0 do 100 aż do momentu, gdy wylosowana zostanie wartość 0
C. kolejne liczby od 1 do 100
D. wylosowane liczby od 1 do 99
Odpowiedź "losowe liczby od 0 do 100 tak długo, aż nie zostanie wylosowana wartość 0" jest poprawna, ponieważ kod źródłowy wykorzystuje funkcję rand(), która generuje losowe liczby z zadanego zakresu, w tym przypadku od 0 do 100. Pętla while działa w taki sposób, że kontynuuje swoje działanie, dopóki zmienna $liczba nie przyjmie wartości 0. Oznacza to, że wszystkie wylosowane liczby, niezależnie od tego, czy są to liczby parzyste, nieparzyste, czy wartości graniczne, będą wyświetlane na ekranie do momentu, aż wylosowana zostanie wartość 0, która przerwie działanie pętli. Przykładem zastosowania tego typu kodu może być generowanie próbki danych w celu testowania algorytmów lub symulacji. Praktyka ta jest zgodna z dobrymi standardami programowania, gdzie często wykorzystuje się losowe dane do różnych celów, takich jak testowanie, analizy statystyczne lub gry. Ponadto, rozumienie jak działa generowanie liczb losowych i kontrola pętli jest podstawową umiejętnością w programowaniu, która pomaga w rozwoju bardziej zaawansowanych aplikacji.

Pytanie 27

W języku PHPnie ma możliwości

A. przetwarzanie danych z formularzy
B. tworzenie dynamicznej zawartości strony internetowej
C. zmienianie dynamiczne treści strony HTML w przeglądarce
D. obróbka informacji przechowywanych w bazie danych
Odpowiedź dotycząca zmieniania dynamicznej zawartości strony HTML w przeglądarce jest poprawna, ponieważ PHP jest językiem skryptowym działającym po stronie serwera. Oznacza to, że PHP nie jest w stanie bezpośrednio modyfikować zawartości strony HTML po jej załadowaniu w przeglądarce użytkownika. Zamiast tego, PHP generuje HTML, który następnie jest przesyłany do przeglądarki. Dynamiczna zawartość strony może być generowana na podstawie danych z bazy danych lub formularzy, ale wszelkie zmiany w HTML po stronie klienta wymagają użycia języków, które działają po stronie przeglądarki, takich jak JavaScript. Przykładem może być sytuacja, w której użytkownik wypełnia formularz, a dane są przetwarzane przez PHP, które zwraca zaktualizowaną stronę. W przypadku potrzeby dynamicznych zmian, JavaScript może być użyty do manipulacji DOM po załadowaniu strony. Warto również zauważyć, że zgodnie z dobrymi praktykami, powinno się oddzielać logikę serwerową (PHP) od logiki klienckiej (JavaScript), co przyczynia się do lepszej struktury kodu i ułatwia jego utrzymanie.

Pytanie 28

W języku PHP wykonano poniższą operację. Aby uzyskać wszystkie rezultaty tego zapytania, należy:

$tab = mysqli_query($db, "SELECT imie FROM Osoby WHERE wiek < 18");
A. wyświetlić zmienną $db
B. zastosować pętlę z poleceniem mysqli_fetch_row
C. użyć polecenia mysql_fetch
D. zaindeksować zmienną tab, tab[0] to pierwsze imię
Odpowiedź, która zakłada zastosowanie pętli z poleceniem mysqli_fetch_row, jest poprawna, ponieważ po wykonaniu zapytania do bazy danych za pomocą mysqli_query, otrzymujemy wynik w postaci zestawu rekordów, który musimy przetworzyć. Funkcja mysqli_fetch_row pozwala na iteracyjne pobieranie wierszy z tego zestawu, co jest niezbędne do wyświetlenia wszystkich imion osób, które spełniają warunek wieku poniżej 18 lat. Przykładowy kod do iteracji może wyglądać tak: while($wiersz = mysqli_fetch_row($tab)) { echo $wiersz[0]; } W ten sposób każda iteracja w pętli wyświetli pierwszą kolumnę (imie) z każdego wiersza rezultatu. Tego typu podejście jest zgodne z dobrymi praktykami, ponieważ pozwala na efektywne zarządzanie pamięcią i ogranicza ryzyko przeciążenia systemu, szczególnie w przypadku dużych zbiorów danych. Ważne jest, aby pamiętać, że połączenie z bazą danych i zapytania powinny być zawsze odpowiednio zamykane i zabezpieczane przed atakami, co jest istotne w kontekście bezpieczeństwa aplikacji.

Pytanie 29

Poniżej przedstawiono fragment kodu obsługującego

<?php
if ( !isset($_COOKIE[$nazwa]) )
  echo "nie ustawiono!";
else
  echo "ustawiono, wartość: " . $_COOKIE[$nazwa];
?>
A. sesji
B. zmiennych tekstowych
C. baz danych
D. ciasteczek
Odpowiedź "ciasteczek" jest poprawna, ponieważ kod PHP przedstawiony w pytaniu zajmuje się obsługą ciasteczek HTTP. Ciasteczka są to małe pliki przechowywane na urządzeniu użytkownika, które pozwalają na zachowanie stanu sesji oraz przechowywanie danych o użytkowniku. W tym przypadku, kod sprawdza, czy ciasteczko o danej nazwie (przechowywane w zmiennej $nazwa) zostało ustawione. Jeśli nie, wyświetla komunikat "nie ustawiono!", a jeśli tak, wyświetla jego wartość. Przykład zastosowania ciasteczek obejmuje przechowywanie preferencji użytkowników na stronach internetowych, takich jak wybór języka czy ostatnio przeglądane produkty w sklepie internetowym. Ważne jest, aby pamiętać o dobrych praktykach dotyczących bezpieczeństwa ciasteczek, takich jak ustalanie odpowiednich flag (np. HttpOnly, Secure), aby chronić je przed atakami typu XSS oraz CSRF. Ciasteczka pozwalają również na śledzenie sesji, co jest istotne dla personalizacji treści i analizy zachowań użytkowników. Zgodnie z RODO, należy również informować użytkowników o używaniu ciasteczek oraz uzyskać ich zgodę na ich przetwarzanie.

Pytanie 30

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_query
B. mysqli_connect
C. mysqli_fetch_row
D. mysqli_num_rows
Funkcja mysqli_num_rows jest kluczowym narzędziem w interakcji z bazą danych w PHP, umożliwiającym sprawdzenie liczby rekordów zwróconych przez zapytanie SELECT. Po wywołaniu mysqli_query, które wykonuje zapytanie SQL, można uzyskać wynik, który jest obiektem typu mysqli_result. Używając mysqli_num_rows, możemy szybko i efektywnie dowiedzieć się, ile rekordów zostało zwróconych przez to zapytanie. Przykładowo, po wykonaniu zapytania do bazy danych można użyć poniższego kodu: $result = mysqli_query($conn, 'SELECT * FROM users'); $count = mysqli_num_rows($result); echo 'Liczba rekordów: ' . $count;. Dzięki temu użytkownik ma pełną kontrolę nad danymi, co jest zgodne z najlepszymi praktykami w programowaniu, gdzie liczenie rekordów może być niezbędne do dalszej logiki aplikacji, jak stronicowanie wyników czy walidacja danych. Warto również wiedzieć, że mysqli_num_rows nie tylko zwraca liczbę rekordów, ale także działa wydajnie, co ma znaczenie przy dużych zbiorach danych, gdzie minimalizowanie obciążenia serwera i bazy jest kluczowe.

Pytanie 31

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.
Gratulacje! Wybrałeś poprawną odpowiedź, czyli zmienna2 i zmienna3 są tych samych typów. W kodzie PHP wartość zmiennej1 była liczbą całkowitą (int), natomiast wartość zmiennej2 była ciągiem znaków (string). Zmienna3 natomiast była wynikiem rzutowania zmiennej1 na typ string. Stąd wynika, że zmienna2 i zmienna3 są obie typu string. Rzutowanie to operacja konwersji jednego typu danych na inny, co jest powszechną praktyką w programowaniu. Używane jest, na przykład, kiedy chcemy porównać dwa różne typy danych lub chcemy je połączyć. Pamiętaj jednak, że PHP jest językiem o dynamicznych typach, co oznacza, że typ zmiennej może ulec zmianie w trakcie wykonania skryptu. Dlatego zawsze warto mieć na uwadze typy zmiennych, z którymi pracujesz.

Pytanie 32

Po uruchomieniu poniższego fragmentu kodu PHP:

echo date("Y");
na ekranie pojawi się bieżąca data zawierająca tylko:
A. dzień i miesiąc
B. rok
C. miesiąc i rok
D. dzień
W odpowiedzi na pytanie, kod PHP echo date("Y"); zwraca aktualny rok, co jest zgodne z jego konstrukcją. Funkcja date() w PHP jest standardowym sposobem na formatowanie daty i czasu. Przekazany argument "Y" oznacza, że chcemy otrzymać rok w czterocyfrowym formacie. Na przykład, jeśli aktualny rok to 2023, wynik będzie wynosił 2023. Tego rodzaju operacje są niezwykle przydatne w różnych aplikacjach, od prostych stron internetowych po bardziej złożone systemy zarządzania treścią, gdzie dane o roku mogą być wykorzystywane do generowania dynamicznych treści, takich jak stopki z roku lub nagłówki z aktualnym rokiem. Użycie funkcji date() w odpowiedni sposób jest zgodne z najlepszymi praktykami programowania w PHP, które zalecają używanie wbudowanych funkcji do zarządzania datami i czasem, co zapewnia większą niezawodność i prostotę w kodzie.

Pytanie 33

W języku PHP zmienna $a została przypisana do wartości 1. Wyrażenie $a === $b będzie miało wartość true, gdy zmienna $b będzie ustawiona na wartość

A. '1'
B. "1" lub '1'
C. *1
D. 1 lub '1'
Odpowiedzi, które sugerują różne typy danych, takie jak '1', 1 lub '1', oraz \"1\" lub '1', mogą prowadzić do nieporozumień wynikających z niepełnego rozumienia operatorów porównania w PHP. W przypadku operatora porównania identyczności (===), ważne jest, aby zarówno wartość, jak i typ zmiennej były zgodne. Porównanie 1 (liczba całkowita) z '1' (łańcuch znaków) zwróci false, ponieważ różnią się one typem. Typowe błędy myślowe, prowadzące do takiej pomyłki, mogą wynikać z braku zrozumienia, jak PHP obsługuje typy danych i konwersję typów. Warto zauważyć, że w innych językach programowania porównania mogą działać inaczej, co może prowadzić do zamieszania, szczególnie w kontekście programowania w PHP. Istotne jest, aby przy projektowaniu aplikacji zawsze stosować porównania identyczności, by uniknąć nieprzewidzianych problemów związanych z typami danych. Dobrą praktyką jest również eksploracja dokumentacji PHP oraz testowanie porównań w praktyce, co pozwala na głębsze zrozumienie działania języka. Właściwe podejście do typów danych oraz klarowne rozumienie operatorów porównania są kluczowymi elementami skutecznego programowania w PHP.

Pytanie 34

Która z poniższych funkcji języka PHP zamieni wyraz „kota” na wyraz „mysz” w zdaniu „ala ma kota”?

A. str_replace("ala ma kota", "kota", "mysz");
B. replace("kota", "mysz", "ala ma kota");
C. replace("ala ma kota", "kota", "mysz");
D. str_replace( "kota", "mysz", "ala ma kota");
Funkcja str_replace w języku PHP jest używana do zastępowania fragmentów tekstu w łańcuchach znaków. W przypadku podanego zadania, funkcja ta ma trzy argumenty: pierwszy argument to szukany ciąg ("kota"), drugi argument to ciąg, który ma zastąpić ten szukany ("mysz"), a trzeci argument to łańcuch, w którym ma zostać dokonana zmiana ("ala ma kota"). Dzięki tej funkcji, wynikowym tekstem po zastosowaniu będzie "ala ma mysz", co jest dokładnie tym, co chcemy osiągnąć. W praktyce, str_replace jest często wykorzystywana w aplikacjach webowych do dynamizowania treści, gdzie na przykład użytkownik może podać różne dane, które należy przetworzyć. Stosowanie str_replace jest zgodne z najlepszymi praktykami programowania w PHP – umożliwia łatwe i efektywne manipulowanie danymi tekstowymi, co jest integralną częścią wielu projektów. Dodatkowo, warto zaznaczyć, że str_replace jest funkcją case-sensitive, co oznacza, że rozróżnia wielkość liter, więc stosowanie jej wymaga staranności w kontekście przetwarzania tekstów.

Pytanie 35

Jakie wyrażenie logiczne w języku PHP weryfikuje, czy zmienna1 znajduje się w jednostronnie domkniętym przedziale <-5, 10)?

A. $zmienna1 <= -5 && $zmienna1 < 10
B. $zmienna1 <= -5 || $zmienna1 < 10
C. $zmienna1 >= -5 && $zmienna1 < 10
D. $zmienna1 >= -5 || $zmienna1 < 10
Odpowiedź $zmienna1 >= -5 && $zmienna1 < 10 jest poprawna, ponieważ odpowiada definicji jednostronnie domkniętego przedziału, który obejmuje wartość -5 oraz wszystkie wartości większe, ale nie obejmuje wartości 10. Operator && (AND) jest używany do jednoczesnego sprawdzania dwóch warunków: pierwszy warunek ($zmienna1 >= -5) zapewnia, że zmienna jest większa lub równa -5, a drugi warunek ($zmienna1 < 10) sprawdza, czy zmienna jest mniejsza niż 10. W praktyce, taki zapis jest istotny w aplikacjach, gdzie ograniczamy zakres wartości dla zmiennych, na przykład w formularzach walidacji danych wejściowych. Dzięki temu możemy uniknąć błędów, które mogą wystąpić w przypadku niepoprawnych danych. Ponadto, stosowanie operatorów logicznych w PHP jest zgodne z najlepszymi praktykami programowania, jak na przykład dbałość o czytelność kodu oraz jego łatwość w utrzymaniu. Warto także pamiętać o testowaniu skrajnych wartości, aby upewnić się, że nasze warunki działają zgodnie z oczekiwaniami.

Pytanie 36

Definicja formularza została wykorzystana na stronie www, która przesyła dane do pliku w języku PHP. W której tablicy będą dostępne informacje z formularza?

<form action="plik.php" method="post">
A. $_POST
B. $_COOKIE
C. $_GET
D. $_ACTION
Formularze w HTML służą do przesyłania danych do serwera, a w kontekście języka PHP dane te są dostępne poprzez różne superglobalne tablice, z których najczęściej używaną przy metodzie POST jest tablica $_POST. Metoda POST, określona w atrybucie 'method' formularza, jest używana do przesyłania danych w bardziej bezpieczny sposób niż metoda GET, ponieważ nie pokazuje przesyłanych informacji w URL. Kiedy dane są wysyłane do skryptu PHP z formularza, wszystkie klucze i wartości formularza stają się dostępne jako elementy tablicy $_POST. Przykładowo, jeśli w formularzu znajduje się pole tekstowe o nazwie 'username', po wysłaniu formularza na stronie 'plik.php' można uzyskać dostęp do wartości tego pola za pomocą $_POST['username']. Ta metoda jest zalecana w przypadku przesyłania danych poufnych, takich jak hasła, ponieważ nie są one widoczne w pasku adresu przeglądarki. Dodatkowo, korzystając z $_POST, można przesyłać dane o większej objętości, co jest niemożliwe w przypadku $_GET, który ma ograniczenia długości URL.

Pytanie 37

W języku PHP, aby otworzyć już istniejący plik lektury.txt w trybie dodawania treści, tak aby wskaźnik pliku został umieszczony na końcu tego pliku należy zastosować instrukcję

A. fopen("lektury.txt", "w")
B. fopen("lektury.txt", "r")
C. fopen("lektury.txt", "x")
D. fopen("lektury.txt", "a")
Poprawnie – w PHP tryb "a" w funkcji fopen() oznacza otwarcie pliku w trybie dopisywania (append). To dokładnie to, czego wymaga pytanie: plik ma już istnieć, a wskaźnik pliku (file pointer) ma zostać ustawiony na koniec, żeby nowa treść była dopisywana za tym, co już jest. Instrukcja fopen("lektury.txt", "a") otwiera pliki tylko do zapisu, nie nadpisuje istniejącej zawartości, tylko dokleja nowe linie na końcu. Jeśli plik nie istnieje, PHP spróbuje go utworzyć, oczywiście jeśli uprawnienia systemu plików na to pozwalają. W praktyce taki tryb stosuje się np. do prowadzenia logów, dzienników zdarzeń, prostych liczników odwiedzin albo dopisywania nowych rekordów tekstowych bez kasowania starych danych. Typowy fragment kodu może wyglądać tak: $fh = fopen("lektury.txt", "a"); fwrite($fh, "Pan Tadeusz\n"); fclose($fh); Po takim zapisie wcześniejsza zawartość lektury.txt zostaje nietknięta, a tekst „Pan Tadeusz” trafia na sam koniec pliku. Z mojego doświadczenia to jest bezpieczniejsza opcja niż tryb "w", kiedy chcemy tylko coś dopisać i absolutnie nie wolno stracić danych, które już w pliku są. Warto też pamiętać o dobrych praktykach: zawsze sprawdzamy wynik fopen() (czy nie zwrócił false), obsługujemy ewentualne błędy i po zakończeniu pracy domykamy uchwyt funkcją fclose(). W większych projektach sensowne jest też blokowanie pliku (flock) przy jednoczesnym dostępie wielu skryptów, żeby dane się nie pomieszały. Tryb "a" jest więc standardowym i zalecanym rozwiązaniem w sytuacjach, gdy trzeba dopisywać dane na końcu istniejącego pliku tekstowego.

Pytanie 38

Który składnik nie jest wymagany do instalacji i uruchomienia systemu CMS Joomla!?

A. serwer WWW
B. platforma .NET
C. parser PHP
D. baza danych
Poprawnie wskazana została platforma .NET jako element, który nie jest wymagany do instalacji i działania Joomla!. Ten CMS jest napisany w PHP i z założenia działa w klasycznym stosie LAMP/LEMP, czyli Linux/Windows + serwer WWW (najczęściej Apache lub Nginx) + PHP + baza danych (MySQL/MariaDB, czasem PostgreSQL). Joomla! korzysta z interpretera PHP do wykonywania całej logiki aplikacji: obsługi logowania, generowania szablonów, pracy z bazą danych, modułów, komponentów itd. Serwer WWW (HTTP) odpowiada za przyjmowanie żądań z przeglądarki i przekazywanie ich do PHP, a baza danych przechowuje treści, użytkowników, konfigurację, menu, artykuły i całą resztę danych dynamicznych. Platforma .NET to zupełnie inny ekosystem technologiczny, typowy dla aplikacji pisanych w C#, ASP.NET, .NET Core, działających np. na IIS. Joomla! nie jest aplikacją .NET, więc nie potrzebuje środowiska uruchomieniowego .NET ani serwera IIS, żeby działać. W praktyce, w typowej firmie hostingowej, gdy chcesz uruchomić Joomla!, patrzysz czy jest obsługa PHP w odpowiedniej wersji, dostęp do bazy MySQL/MariaDB oraz czy serwer WWW pozwala na friendly URLs (mod_rewrite lub odpowiednik). To są realne wymagania. Można oczywiście postawić Joomla! także na Windowsie, ale dalej korzystasz z PHP i serwera WWW, a nie z ASP.NET. Moim zdaniem warto zapamiętać prostą zasadę: jeśli CMS jest napisany w PHP, to kluczowe są PHP, serwer HTTP i baza danych, a nie platformy typowe dla innych języków, jak .NET czy Java.

Pytanie 39

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. warunek4
C. warunek2
D. warunek3
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.

Pytanie 40

Przypisanie wartości do zmiennej $dana = 125; zapisane jest w języku

A. JavaScript
B. C++
C. Python
D. PHP
Instrukcja $dana = 125; jest charakterystyczna dla języka PHP, bo po pierwsze używa znaku dolara przed nazwą zmiennej, a po drugie ma średnik na końcu, tak jak wymagają tego standardy składni PHP. W PHP każda zmienna zaczyna się od $, np. $liczba, $imie, $userId. Jest to jedna z najbardziej rozpoznawalnych cech tego języka, od razu widać, że chodzi o kod wykonywany po stronie serwera, a nie np. o Pythona. W typowym pliku PHP taki zapis pojawi się wewnątrz znacznika <?php ... ?>, na przykład: <?php $dana = 125; echo $dana; ?> To jest klasyczny przykład przypisania wartości typu całkowitego do zmiennej. PHP jest językiem słabo typowanym (dynamicznie typowanym), więc nie trzeba wcześniej deklarować typu zmiennej. Wystarczy ją po prostu utworzyć przez przypisanie. Z mojego doświadczenia to jest bardzo wygodne przy szybkim tworzeniu aplikacji webowych, np. liczników, prostych kalkulatorów, obsługi formularzy. W praktyce takie przypisanie wykorzystuje się choćby przy pobieraniu danych z formularza: $wiek = (int)$_POST['wiek']; albo przy obliczeniach: $suma = $a + $b;. Dobrą praktyką jest nadawanie zmiennym czytelnych nazw i pilnowanie, żeby typ danych był przewidywalny, nawet jeśli PHP pozwala na sporą dowolność. W nowoczesnych projektach PHP (np. w frameworkach typu Laravel czy Symfony) nadal używa się dokładnie takiej składni przypisania, tylko zazwyczaj w bardziej rozbudowanych strukturach, np. w klasach, kontrolerach czy modelach. Moim zdaniem warto od początku kojarzyć znak $ jednoznacznie z PHP, bo to bardzo pomaga przy szybkim rozpoznawaniu przykładowego kodu w dokumentacji czy na forach.