Dlaczego PHP w 2024 roku wciąż ma sens dla początkującego webmastera
PHP w praktyce: co naprawdę napędza dzisiejszy internet
Większość początkujących webmasterów zaskakuje fakt, że mimo głośnych trendów typu Node.js, Python czy aplikacje serverless, ogromna część internetu nadal działa na PHP. Szacunki różnych raportów pokazują, że zdecydowana większość stron opartych na CMS-ach korzysta z PHP. To nie jest moda, tylko konsekwencja kilku prostych faktów: język jest łatwo dostępny na tanich hostingach, ma ogromny ekosystem i świetnie nadaje się do typowych zleceń typu „strona firmowa + blog + prosty sklep”.
Najpopularniejszy system zarządzania treścią, WordPress, jest napisany w PHP. To samo dotyczy takich projektów jak Drupal czy Joomla. Jeśli ktoś zarabia na tworzeniu stron dla klientów, bardzo często kończy z WordPressem lub innym CMS-em na PHP, dopisuje własne motywy, modyfikuje wtyczki i poprawia gotowe rozwiązania pod konkretne potrzeby. Znajomość PHP sprawia, że nie jest się tylko „instalatorem szablonów”, ale osobą, która potrafi naprawdę dopasować stronę do biznesu.
Duże platformy – fora, sklepy, systemy do rezerwacji – też często bazują na PHP. Wiele firm korzysta z gotowych skryptów (np. SaaS do sprzedaży kursów, systemy biletowe), w których prędzej czy później trzeba coś zmienić. Znajomość PHP pozwala pracować z tego typu projektami bez strachu, a jednocześnie otwiera drogę do własnych, lekkich narzędzi i integracji.
PHP 8.x kontra „stare” PHP – dlaczego to ma znaczenie przy nauce
PHP 8.0, 8.1 i 8.2 wprowadziły dużo zmian, które z punktu widzenia osoby uczącej się od zera są ogromnym plusem. Mowa m.in. o ścisłym typowaniu, nowych konstrukcjach składniowych, lepszej obsłudze błędów i znacznie lepszej wydajności. Dla webmastera przekłada się to na bardziej przewidywalny kod i mniejszą liczbę dziwnych niespodzianek typu „dlaczego to czasem działa, a czasem nie”.
W sieci nadal krąży mnóstwo poradników pisanych pod PHP 5.x i wczesne 7.x. To właśnie one uczą złych nawyków: mieszania HTML z gigantycznymi blokami PHP, używania starych funkcji do pracy z bazą danych czy ignorowania bezpieczeństwa. Ucząc się w 2024 roku, trzeba świadomie wybierać materiały aktualne dla PHP 8.x, zwłaszcza jeśli chodzi o:
- typowanie parametrów i zwracanych wartości w funkcjach,
- obsługę wyjątków i błędów,
- przygotowane zapytania PDO zamiast starych funkcji mysql_*,
- podstawy OOP w PHP i przestrzenie nazw.
Nowoczesne PHP to inny poziom jakości niż to, z czego śmiano się dekadę temu. Dla osoby startującej dziś oznacza to, że można od razu uczyć się dobrych praktyk, bez konieczności „oduczania się” starych konstrukcji.
Kiedy PHP ma sens, a kiedy lepiej wybrać inne narzędzie
PHP świetnie sprawdza się w projektach typowo webmasterskich: strony firmowe, blogi, serwisy contentowe, proste sklepy, systemy rezerwacji, panele administracyjne, integracje pod WordPressa. W takich zadaniach krytyczne jest szybkie wdrożenie, dostępność tanich hostingów i możliwość łatwego znalezienia pomocy lub gotowych rozwiązań.
Gdy mowa o rozbudowanych aplikacjach SPA (Single Page Application), które działają głównie w przeglądarce i mocno polegają na frameworkach JavaScript (React, Vue, Angular), PHP często pełni rolę backendu API, ale sama logika interfejsu jest w JS. Jeśli Twoim celem jest typowo frontendowa kariera, wtedy ciężar nauki przesuwa się w stronę JavaScript i jego ekosystemu. PHP nadal może być przydatny, ale nie będzie centralnym punktem.
Są też obszary, gdzie lepszym wyborem bywają inne języki: mikroserwisy o wysokich wymaganiach wydajnościowych, zaawansowane systemy data science czy IoT. W takich przypadkach częściej pojawi się Go, Rust, Python czy Node.js. Dla większości początkujących webmasterów, którzy stawiają na praktyczne projekty WWW, PHP nadal jest najprostszą drogą do płatnych zleceń.
Co sprawdzić po tej sekcji – szybki test celu
Przed wejściem w składnię PHP warto na chwilę się zatrzymać i określić kierunek:
- Krok 1: spisz, jakie projekty chcesz tworzyć w najbliższych 6–12 miesiącach (np. „blog z systemem komentarzy”, „strona firmowa z prostym sklepem”, „motyw WordPressa”).
- Krok 2: sprawdź, czy typowy najtańszy hosting, który planujesz używać, oferuje aktualną wersję PHP (co najmniej 8.1 / 8.2) oraz wsparcie dla baz danych MySQL/MariaDB.
Fundamenty przed PHP – co trzeba umieć jako webmaster startujący w 2024 roku
HTML i CSS – absolutna baza przed pierwszym skryptem
PHP bez HTML i CSS jest jak silnik bez karoserii – działa, ale nikt na to nie chce patrzeć. Przed wejściem w świat PHP trzeba swobodnie czuć się w świecie znaczników i prostego stylowania. Chodzi przede wszystkim o:
- poprawną strukturę dokumentu HTML (
<html>, <head>, <body>), - znajomość podstawowych znaczników: nagłówków, akapitów, list, linków, obrazków, formularzy,
- zrozumienie, jak CSS wpływa na wygląd: selektory, klasy, ID, podstawowe właściwości (kolor, margines, padding, font-size).
Proste ćwiczenie przed wejściem w PHP: przygotuj statyczną wizytówkę – jedną stronę z nagłówkiem, krótkim opisem, listą usług i formularzem kontaktowym (bez działania). Zadbaj o to, by kod był czytelny, wcięcia spójne, a plik CSS oddzielony od HTML. Ten szkielet później wypełni się logiką PHP.
Jeśli HTML/CSS sprawiają jeszcze duży problem, lepiej poświęcić tydzień–dwa na solidne przećwiczenie podstaw. PHP będzie wtedy znacznie łatwiejsze do wkomponowania w całość.
Po co JavaScript, skoro uczysz się PHP
PHP i JavaScript nie konkurują, tylko się uzupełniają. JS działa w przeglądarce użytkownika (frontend), a PHP na serwerze (backend). Dla webmastera istotnych jest kilka prostych koncepcji z JavaScriptu, które wpływają na to, jak projektuje się backend w PHP:
- walidacja po stronie klienta – JS może wstępnie sprawdzić formularz (czy pola nie są puste, czy e-mail ma prawidłowy format),
- walidacja po stronie serwera – PHP musi powtórzyć te kontrole, bo klient (przeglądarka) może być złośliwy lub wyłączony z JS,
- AJAX/fetch – JS wysyła żądania do serwera bez przeładowywania strony, a PHP przygotowuje odpowiedź (np. JSON).
Znając podstawy JS (zmienne, funkcje, eventy, fetch), łatwiej zrozumieć, dlaczego PHP czasem zwraca HTML, a czasem sam JSON. To również przygotowuje pod bardziej zaawansowane projekty, gdzie PHP będzie backendem dla frontendu napisanego w frameworku JS.
Jak działa WWW: prosty obraz requestu i response
Żeby logicznie projektować skrypty, trzeba wiedzieć, co dzieje się po wpisaniu adresu w przeglądarce. W ogromnym uproszczeniu:
- Przeglądarka wysyła żądanie HTTP (request) na określony adres (URL).
- Serwer HTTP (np. Apache) odbiera to żądanie i na podstawie konfiguracji uruchamia odpowiedni skrypt PHP.
- PHP wykonuje się po stronie serwera: czyta dane z formularza, łączy się z bazą, generuje HTML lub JSON.
- Gotowy tekst odpowiedzi (HTML/JSON) trafia z powrotem do przeglądarki jako response.
- Przeglądarka wyświetla wynik użytkownikowi.
Frontend (HTML/CSS/JS) działa więc „po drugiej stronie” niż PHP. Skrypt PHP nie widzi od razu tego, co widzi użytkownik – generuje dopiero to, co trafi do przeglądarki. Świadomość tej granicy pomaga unikać typowych błędów typu „chcę, żeby PHP zareagowało na kliknięcie przycisku bez przeładowania strony” – do tego potrzebny jest JavaScript z AJAX.
Co sprawdzić po tej sekcji – minimum techniczne
Przed rozpoczęciem nauki składni PHP dobrze upewnić się, że kilka podstaw jest już na swoim miejscu:
- Krok 1: stwórz prostą statyczną stronę z formularzem kontaktowym (HTML + CSS) i otwórz ją lokalnie w przeglądarce.
- Krok 2: opisz jednym zdaniem, co Twoim zdaniem dzieje się po kliknięciu w link i po wysłaniu formularza – gdzie trafia request, co powinien zrobić serwer.
Jeżeli jesteś w stanie samodzielnie utworzyć prostą stronę i z grubsza wyjaśnić drogę request–response, fundament pod PHP jest gotowy. Reszta to już stopniowe dokładanie kolejnych elementów układanki.

Przygotowanie środowiska – krok po kroku od zera do działającego serwera PHP
Co wybrać: XAMPP, WAMP, Docker czy natywny serwer
Do lokalnej nauki PHP potrzebujesz środowiska, które będzie udawało serwer WWW na Twoim komputerze. Do wyboru są trzy główne drogi:
| Rozwiązanie | Dla kogo | Zalety | Wady |
|---|---|---|---|
| XAMPP / WAMP / MAMP | Początkujący webmaster | Szybka instalacja, wszystko w jednym, prosty panel | Nadmiar rzeczy, mniej elastyczne dla zaawansowanych |
| Docker | Bardziej zaawansowani / devops | Powtarzalne środowisko, łatwe odtwarzanie konfiguracji | Wyższa krzywa nauki, dodatkowe narzędzia |
| Natywny PHP + Apache/nginx | Osoby techniczne | Pełna kontrola, zbliżone do produkcji | Więcej ręcznej konfiguracji |
Dla osoby startującej w 2024 roku najsensowniejszy jest XAMPP (Windows/Linux) lub MAMP (macOS). Instalujesz jeden pakiet, dostajesz Apache, PHP i MySQL. Jednym przyciskiem uruchamiasz serwer, a cała konfiguracja na początek ogranicza się do znalezienia odpowiedniego katalogu z plikami.
Krok 1: instalacja XAMPP i uruchomienie Apache + PHP
Krok po kroku wygląda to następująco:
- Krok 1: pobierz najnowszą wersję XAMPP z oficjalnej strony (dobierz pod swój system).
- Krok 2: zainstaluj pakiet, zostawiając domyślne ustawienia, chyba że masz konkretną potrzebę ich zmiany.
- Krok 3: uruchom panel XAMPP i wystartuj moduł Apache (dla pracy z bazą danych włącz też MySQL).
Domyślnie pliki stron w XAMPP lądują w katalogu htdocs (np. C:xampphtdocs na Windows). To tam tworzysz swoje foldery projektów, np. C:xampphtdocsmojastrona. Kiedy Apache działa, wejście w przeglądarce na adres http://localhost powinno wyświetlić domyślną stronę powitalną XAMPP. Jeśli chcesz wejść w swój projekt, używasz adresu http://localhost/mojastrona.
Krok 2: wybór edytora kodu i podstawowa konfiguracja
Do pracy z PHP wystarczy lekki, ale rozbudowany edytor z podświetlaniem składni. Najczęstszy wybór początkujących to Visual Studio Code, bo jest darmowy, działa na wszystkich systemach i ma bogaty ekosystem wtyczek. Alternatywą, szczególnie dla osób nastawionych stricte na PHP, jest PhpStorm (płatny, ale często dostępny z licencją edukacyjną).
Konfiguracja minimalna:
- zainstaluj VS Code,
- zainstaluj rozszerzenia: „PHP Intelephense”, „PHP CS Fixer” (lub podobne), ewentualnie rozszerzenie do pracy z Xdebug,
- ustaw kodowanie na UTF-8 i zakończenia linii odpowiednie dla Twojego systemu (zwykle domyślne są OK).
Warto od początku przyzwyczaić się do spójnego formatowania: wcięcia na 4 spacje lub tab, jednolity styl nawiasów klamrowych i czytelne nazwy plików (np. contact.php, header.php, a nie 1.php).
Krok 3: pierwszy plik index.php i klasyczne „Hello world”
Pierwszy projekt w katalogu htdocs
Zanim powstanie pierwszy skrypt, dobrze uporządkować strukturę plików. Dzięki temu kolejne projekty nie zaczną się na siebie „nadziewać”.
Krok po kroku:
- Otwórz katalog
htdocs(np.C:xampphtdocs). - Utwórz nowy folder, np.
pierwszy-projekt. - W środku stwórz plik
index.php. - Otwórz ten plik w edytorze (VS Code / PhpStorm).
Adres strony będzie teraz prosty: http://localhost/pierwszy-projekt/. Serwer Apache, widząc nazwę index.php, potraktuje ją jako domyślny plik startowy w tym katalogu.
Jeżeli chcesz równolegle testować kilka stron, dla każdej zakładaj osobny katalog w htdocs. Unikniesz dzięki temu bałaganu z plikami o tych samych nazwach.
Minimalny szkielet pliku PHP
Skrypt PHP to zwykły plik tekstowy, ale z rozszerzeniem .php. W środku potrzebuje znaczników otwierających i zamykających kod.
Wpisz do pliku index.php poniższy kod:
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Pierwszy skrypt PHP</title>
</head>
<body>
<h1>Moja pierwsza strona z PHP</h1>
<p>
<?php
echo "Hello world z PHP!";
?>
</p>
</body>
</html>
Fragment <?php ... ?> to blok kodu wykonywanego po stronie serwera. Reszta to zwykły HTML. Serwer najpierw uruchamia PHP, a efekt (Hello world z PHP!) wstawia w miejsce znacznika, zanim wyśle całość do przeglądarki.
Jeśli odpowiedzi wypadają pozytywnie, nauka PHP w 2024 roku jest rozsądną decyzją i realnie przybliży do pierwszych komercyjnych projektów. Gdy chcesz spojrzeć szerzej na świat IT i różne ścieżki rozwoju, przydaje się też lektura serwisów typu więcej o technologia, gdzie obok PHP przewijają się również inne technologie i zastosowania.
Najczęstszy błąd na tym etapie: otwieranie pliku index.php podwójnym kliknięciem (system wyświetla go jak zwykły plik HTML). Strona nie przechodzi wtedy przez serwer i PHP nie jest interpretowane. Zawsze wpisuj adres z http://localhost/... w pasku przeglądarki, gdy chcesz uruchomić skrypt PHP.
Diagnostyka: co jeśli „Hello world” się nie wyświetla
Jeżeli zamiast napisu widzisz surowy kod <?php echo... albo błąd, przejdź krótką checklistę:
- krok 1: sprawdź, czy Apache w XAMPP jest włączony (zielone „Running”),
- krok 2: upewnij się, że używasz adresu
http://localhost/pierwszy-projekt/, a nie ścieżkifile://..., - krok 3: sprawdź rozszerzenie pliku – musi być
.php, a nie.html, - krok 4: upewnij się, że znacznik otwierający to
<?php, a nie np.<? >.
Po każdej poprawce odśwież stronę w przeglądarce. PHP wykonuje się przy każdym żądaniu, dlatego zmiany w kodzie są widoczne od razu po odświeżeniu.
Co sprawdzić po konfiguracji środowiska
Na tym etapie przydaje się krótkie podsumowanie w praktyce:
- uruchom
http://localhost/i sprawdź, czy widać stronę startową XAMPP, - utwórz i odpal
http://localhost/pierwszy-projekt/z własnymindex.php, - zmień treść w
echo "Hello world z PHP!";na coś innego i upewnij się, że zmiana pojawia się po odświeżeniu.
Jeżeli te trzy punkty działają, środowisko masz gotowe, a przejście do nauki samego języka będzie znacznie prostsze.
Składnia i podstawy PHP – pierwsze skrypty krok po kroku
Znaczniki PHP i komentarze w kodzie
Każdy fragment kodu wykonywanego przez interpreter PHP musi znaleźć się między znacznikami otwierającym i zamykającym:
<?php
// tutaj kod PHP
?>
Do dokumentowania własnych skryptów używaj komentarzy:
<?php
// komentarz jednolinijkowy
/*
komentarz
wielolinijkowy
*/
?>
Dobry nawyk od początku: opisuj w komentarzach „po co”, a nie „co” robi linijka kodu. Kod zmienia się częściej niż zamiar.
Zmienne i proste typy danych
Zmienne w PHP zaczynają się od znaku $. Nie deklarujesz typu z góry – PHP dopasowuje go na podstawie wartości.
<?php
$imie = "Ania"; // łańcuch znaków (string)
$wiek = 25; // liczba całkowita (integer)
$wysokosc = 1.68; // liczba zmiennoprzecinkowa (float)
$czy_admin = true; // wartość logiczna (boolean)
echo $imie;
?>
Kilka prostych zasad nazewnictwa:
- używaj czytelnych nazw:
$nazwa_uzytkownika,$cena_brutto, - unikaj polskich znaków w nazwach zmiennych,
- nie zaczynaj od cyfry (
$2wynikjest błędne).
Jeśli po wprowadzeniu nowej zmiennej widzisz błąd typu Undefined variable, oznacza to, że próbujesz się do niej odwołać przed ustawieniem wartości albo literówka zmieniła nazwę.
Łączenie PHP z HTML – echo, krótkie wstawki i alternatywy
W praktyce najczęściej mieszasz PHP z HTML-em. Najprostsza forma to echo generujące fragment HTML:
<?php
$tytul = "Moja pierwsza strona";
echo "<h1>$tytul</h1>";
?>
Czytelniejszą metodą są krótkie wstawki z użyciem <?= ... ?> (skrócona forma echo):
<?php
$imie = "Ania";
$miasto = "Gdańsk";
?>
<p>Cześć, mam na imię <strong><?= $imie ?></strong> i mieszkam w <?= $miasto ?>.</p>
Taki zapis ułatwia utrzymanie przejrzystego HTML-a. Logikę (pętle, warunki) trzymaj głównie w sekcjach PHP, a HTML używaj do samej struktury treści.
Operatory i proste obliczenia w PHP
Pierwsze mini-funkcjonalności zwykle sprowadzają się do prostych obliczeń: sum, procentów, zaokrągleń.
<?php
$cena_netto = 100;
$vat = 0.23;
$cena_brutto = $cena_netto * (1 + $vat);
echo "Cena brutto: " . $cena_brutto . " zł";
?>
Najczęściej używane operatory:
- arytmetyczne:
+,-,*,/,%(reszta z dzielenia), - porównania:
==,!=,<,>,<=,>=, - logicze:
&&(i),||(lub),!(negacja).
Jeśli wynik „skleja się” bez spacji, dołącz je ręcznie w łańcuchu, np. " zł" albo dodaj spację po dwukropku.
Instrukcje warunkowe – reagowanie na różne sytuacje
Bez warunków ciężko zbudować cokolwiek dynamicznego. Klasyczny przykład: inny komunikat dla zalogowanego i niezalogowanego użytkownika.
<?php
$zalogowany = false;
if ($zalogowany) {
echo "Witaj ponownie!";
} else {
echo "Witaj, gościu. <a href="login.php">Zaloguj się</a>";
}
?>
Prosty przykład z warunkiem zagnieżdżonym:
<?php
$wiek = 17;
if ($wiek >= 18) {
echo "Masz pełny dostęp.";
} elseif ($wiek >= 13) {
echo "Część treści może być niedostępna.";
} else {
echo "Treści tylko dla dzieci.";
}
?>
Typowe potknięcie: użycie = zamiast == w warunku (if ($wiek = 18)). Pojedynczy znak równości przypisuje wartość zamiast porównywać, więc warunek działa nie tak, jak zakładasz.
Pętle – powtarzanie elementów stron
Pętle przydają się przy generowaniu list, tabel, powtarzalnych bloków treści (oferty, wpisy na blogu). Zamiast kopiować kod wiele razy, powielasz go programistycznie.
<?php
$uslugi = ["Strona wizytówka", "Sklep internetowy", "Landing page"];
echo "<ul>";
foreach ($uslugi as $usluga) {
echo "<li>" . $usluga . "</li>";
}
echo "</ul>";
?>
Przykład pętli for z numeracją elementów:
<?php
for ($i = 1; $i <= 5; $i++) {
echo "<p>To jest akapit numer $i</p>";
}
?>
Jeżeli pętla zawiesza stronę (ładuje się bardzo długo), w większości przypadków winny jest zły warunek kończący, np. $i-- zamiast $i++ lub warunek, który nigdy nie przestaje być spełniony.
Tablice asocjacyjne – dane opisane kluczami
Proste tablice indeksowane liczbami już się przydają, ale w pracy webmastera wygodniejsze bywają tablice asocjacyjne – z kluczami tekstowymi.
<?php
$uzytkownik = [
"imie" => "Kasia",
"email" => "kasia@example.com",
"miasto" => "Kraków"
];
echo "Imię: " . $uzytkownik["imie"] . "<br>";
echo "E-mail: " . $uzytkownik["email"] . "<br>";
echo "Miasto: " . $uzytkownik["miasto"];
?>
Takie struktury świetnie nadają się do przekazywania danych o jednym obiekcie: użytkowniku, produkcie, stronie. W połączeniu z pętlą foreach łatwo z nich generować całe sekcje HTML.
Wczytywanie danych z formularza – pierwszy „żywy” formularz
Jako webmaster szybko dojdziesz do punktu, w którym formularz kontaktowy ma faktycznie coś robić. Zacznij od najprostszej wersji – pobrania danych i ich wyświetlenia.
Krok 1: przygotuj formularz HTML (np. w kontakt.php):
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title>Formularz kontaktowy</title>
</head>
<body>
<form action="kontakt.php" method="post">
<label>Imię:<br>
<input type="text" name="imie">
</label><br><br>
<label>E-mail:<br>
<input type="email" name="email">
</label><br><br>
<label>Wiadomość:<br>
<textarea name="wiadomosc"></textarea>
</label><br><br>
<button type="submit">Wyślij</button>
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$imie = $_POST["imie"] ?? "";
$email = $_POST["email"] ?? "";
$wiadomosc = $_POST["wiadomosc"] ?? "";
echo "<h2>Odebrano dane:</h2>";
echo "<p>Imię: " . htmlspecialchars($imie) . "</p>";
echo "<p>E-mail: " . htmlspecialchars($email) . "</p>";
echo "<p>Wiadomość: " . nl2br(htmlspecialchars($wiadomosc)) . "</p>";
}
?>
</body>
</html>
Kilka istotnych elementów:
method="post"– dane są wysyłane w ciele żądania, nie w adresie URL,$_POST["pole"]– tablica superglobalna z danymi z formularza,htmlspecialchars()– chroni przed wstrzyknięciem HTML/JS do wyniku,nl2br()– zamienia znaki nowej linii na<br>, dzięki czemu formatowanie wiadomości jest zachowane.
Prosty „silnik szablonów” – rozdzielenie logiki i wyglądu
Przy kilku prostych stronach mieszanie HTML i PHP w jednym pliku wystarcza. Gdy stron robi się więcej, łatwiej się pracuje, jeśli wydzielisz część wspólną (nagłówek, stopkę, menu) i zawartość poszczególnych podstron.
Jeśli interesują Cię konkrety i przykłady, rzuć okiem na: Blockchain w energetyce – inteligentne kontrakty dla zielonej energii.
Krok 1: przygotuj wspólny nagłówek, np. partials/header.php:
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8">
<title><?= $pageTitle ?? "Moja strona w PHP" ?></title>
</head>
<body>
<header>
<h1>Moja strona</h1>
<nav>
<a href="index.php">Start</a> |
<a href="oferta.php">Oferta</a> |
<a href="kontakt.php">Kontakt</a>
</nav>
<hr>
</header>
Krok 2: przygotuj stopkę, np. partials/footer.php:
<footer>
<hr>
<p>© <?= date("Y") ?> Moja firma</p>
</footer>
</body>
</html>
Krok 3: użyj tych fragmentów w podstronie, np. oferta.php:
<?php
$pageTitle = "Oferta - Moja strona w PHP";
include __DIR__ . "/partials/header.php";
?>
<main>
<h2>Oferta</h2>
<p>Tu opisujesz swoje usługi.</p>
</main>
<?php
include __DIR__ . "/partials/footer.php";
?>
Użycie __DIR__ pomaga uniknąć błędów ścieżek, zwłaszcza gdy pliki leżą w różnych katalogach.
Najczęstsze potknięcia przy takich „szablonach”:
- duplikowanie całego HTML-a w kilku plikach zamiast użycia
include, - nadpisywanie zmiennej
$pageTitlepo załadowaniu nagłówka (nie zadziała dynamiczny tytuł), - literówki w nazwach katalogów, np.
partialvspartials.
Co sprawdzić: zmień tytuł strony w $pageTitle w jednej z podstron i odśwież – jeśli przeglądarka pokazuje nowy tytuł na karcie, prosty mechanizm szablonów już działa.
Obsługa prostych błędów i debugowanie początkującego
Na starcie największym „przeciwnikiem” są białe strony i komunikaty o błędach. Lepiej od razu ustawić środowisko tak, by błędy były widoczne, ale tylko na lokalnym serwerze.
Krok 1: włącz błędy na lokalnym serwerze, np. w pliku config/dev.php:
<?php
error_reporting(E_ALL);
ini_set("display_errors", "1");
?>
Krok 2: dołącz konfigurację na początku każdej strony w środowisku developerskim:
<?php
require __DIR__ . "/config/dev.php";
?>
Krok 3: naucz się czytać komunikaty. Przykład:
Parse error: syntax error, unexpected ';' in C:xampphtdocsindex.php on line 12Informacja „syntax error” i numer linii oznacza zwykle:
- brakujący średnik w poprzedniej linii,
- brakujący nawias
)lub}, - dziwny znak (czasami skopiowany z internetu cudzysłów „ładny”, a nie prosty).
Przy bardziej złożonych błędach pomaga proste „logowanie do pliku”:
<?php
file_put_contents("log.txt", date("Y-m-d H:i:s") . " - Test logun", FILE_APPEND);
?>
Co sprawdzić: wprowadź celowo błąd (usuń średnik), odśwież stronę i zobacz, jak wygląda komunikat. Następnie popraw kod, aby upewnić się, że rozumiesz działanie systemu błędów.
Funkcje użytkownika – porządkowanie powtarzalnego kodu
Gdy kopiujesz ten sam blok kodu kilka razy (np. generowanie karty produktu), czas go zamknąć w funkcji. Zmniejsza to ryzyko błędów i ułatwia modyfikacje.
Krok 1: zdefiniuj funkcję, np. w functions.php:
<?php
function policz_cene_brutto(float $netto, float $vat = 0.23): float
{
return $netto * (1 + $vat);
}
?>
Krok 2: użyj funkcji w skrypcie:
<?php
require __DIR__ . "/functions.php";
$cena_netto = 150;
$cena_brutto = policz_cene_brutto($cena_netto);
echo "Cena netto: $cena_netto zł<br>";
echo "Cena brutto: $cena_brutto zł";
?>
W definicji funkcji możesz podawać typy argumentów i typ zwracany. W nowoczesnym PHP to duże ułatwienie – szybciej wykryjesz, że np. ktoś przesłał tekst zamiast liczby.
Typowe błędy przy funkcjach:
- nazywanie funkcji z polskimi znakami lub spacjami,
- definiowanie funkcji po jej użyciu w tym samym pliku bez wcześniejszego
require(własne funkcje powinny być załadowane na górze), - przekazywanie zbyt małej lub zbyt dużej liczby argumentów (PHP zgłasza wtedy ostrzeżenia).
Co sprawdzić: zmień domyślną stawkę VAT w funkcji, odśwież stronę i zobacz, że wszystkie miejsca korzystające z funkcji od razu liczą według nowej stawki.
Prosty router – kilka podstron w jednym pliku
Nawet bez frameworka możesz zbudować nieskomplikowany „router”, który pod jedną bramką index.php obsłuży różne podstrony. To szybka droga do mini-strony firmowej utrzymywanej z jednego pliku PHP i kilku szablonów.
Krok 1: zrób katalog views i kilka plików, np. home.php, oferta.php, kontakt.php – każdy tylko z HTML i ewentualnymi krótkimi wstawkami PHP.
Krok 2: przygotuj plik index.php:
<?php
require __DIR__ . "/config/dev.php";
$page = $_GET["page"] ?? "home";
$allowedPages = ["home", "oferta", "kontakt"];
if (!in_array($page, $allowedPages, true)) {
$page = "home";
}
$pageTitle = ucfirst($page) . " - Moja strona";
include __DIR__ . "/partials/header.php";
include __DIR__ . "/views/" . $page . ".php";
include __DIR__ . "/partials/footer.php";
?>
Krok 3: linkuj między podstronami za pomocą parametrów zapytania:
<a href="index.php?page=home">Start</a>
<a href="index.php?page=oferta">Oferta</a>
<a href="index.php?page=kontakt">Kontakt</a>
Ważny element to biała lista $allowedPages. Bez niej ktoś mógłby w parametrze page podać dowolną ścieżkę i spróbować wczytać nieprzeznaczony do tego plik.
Co sprawdzić: wywołaj w przeglądarce adres index.php?page=kontakt i upewnij się, że ładuje się inna treść niż pod index.php?page=home, ale nagłówek i stopka są te same.
Podstawy pracy z plikami – prosty „notatnik” na serwerze
Bez bazy danych też można coś zapisać – wystarczy plik. W praktyce bywa używany np. do logów, prostych liczników wejść czy prototypów formularzy.
Do kompletu polecam jeszcze: Jak przygotować się do pierwszej wizyty u dentysty – poradnik dla dorosłych i dzieci — znajdziesz tam dodatkowe wskazówki.
Krok 1: przygotuj prosty formularz notatki, np. notatki.php:
<form method="post">
<label>Twoja notatka:<br>
<textarea name="tresc" rows="5" cols="40"></textarea>
</label><br><br>
<button type="submit">Zapisz</button>
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$tresc = trim($_POST["tresc"] ?? "");
if ($tresc !== "") {
$linia = date("Y-m-d H:i") . " | " . str_replace(["r", "n"], " ", $tresc) . PHP_EOL;
file_put_contents("notatki.txt", $linia, FILE_APPEND);
echo "<p>Zapisano notatkę.</p>";
} else {
echo "<p>Podaj treść notatki.</p>";
}
}
if (file_exists("notatki.txt")) {
echo "<h2>Lista notatek</h2>";
echo "<pre>" . htmlspecialchars(file_get_contents("notatki.txt")) . "</pre>";
}
?>
Kilka drobiazgów ma duże znaczenie:
FILE_APPEND– dopisuje linię na końcu pliku zamiast go nadpisywać,trim()– usuwa puste spacje i znaki końca linii,str_replace()– zamienia znaki końca linii w środku notatki, żeby każda notatka zajmowała jedną linię pliku.
Co sprawdzić: wyślij kilka notatek, a potem otwórz plik notatki.txt w edytorze – każda linia powinna zawierać datę i treść, a starsze notatki mają pozostać na miejscu.
Bezpieczniejsze formularze – walidacja po stronie PHP
Formularz, który „przyjmie wszystko”, szybko zacznie sprawiać kłopoty: puste zgłoszenia, nieprawidłowe adresy e-mail, zbyt długie wiadomości. Dlatego walidacja po stronie PHP jest tak samo ważna jak JavaScript w przeglądarce.
Krok 1: dodaj prostą walidację do formularza kontaktowego:
<?php
$bledy = [];
$imie = "";
$email = "";
$wiadomosc = "";
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$imie = trim($_POST["imie"] ?? "");
$email = trim($_POST["email"] ?? "");
$wiadomosc = trim($_POST["wiadomosc"] ?? "");
if ($imie === "") {
$bledy[] = "Podaj imię.";
}
if ($email === "" || !filter_var($email, FILTER_VALIDATE_EMAIL)) {
$bledy[] = "Podaj poprawny adres e-mail.";
}
if ($wiadomosc === "") {
$bledy[] = "Podaj treść wiadomości.";
} elseif (mb_strlen($wiadomosc) > 1000) {
$bledy[] = "Wiadomość jest za długa (maksymalnie 1000 znaków).";
}
if (empty($bledy)) {
// tu później dodasz wysyłkę maila
echo "<p>Dziękujemy za kontakt.</p>";
}
}
?>
Krok 2: wyświetl błędy nad formularzem:
<?php if (!empty($bledy)): ?>
<div style="color:red;">
<ul>
<?php foreach ($bledy as $blad): ?>
<li><?= htmlspecialchars($blad) ?></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
Krok 3: zachowaj wprowadzone dane w polach po błędnej walidacji:
<input type="text" name="imie" value="<?= htmlspecialchars($imie) ?>">
<input type="email" name="email" value="<?= htmlspecialchars($email) ?>">
<textarea name="wiadomosc"><?= htmlspecialchars($wiadomosc) ?></textarea>
Typowa pułapka: zapomnienie o htmlspecialchars() przy ponownym wyświetleniu danych. Bez tego użytkownik może wstrzyknąć kod HTML/JS, który przeglądarka uruchomi podczas wyświetlania błędów.
Co sprawdzić: wyślij formularz z pustymi polami – na stronie powinny pojawić się komunikaty o błędach, a pola powinny zachować podane wcześniej wartości.
Sesje – prosty mechanizm „zapamiętywania” użytkownika
Żeby zalogowany użytkownik nie musiał podawać danych na każdej stronie, PHP używa sesji. Dla webmastera to podstawa do zbudowania prostego panelu administracyjnego.
Krok 1: uruchom sesję na początku pliku:
<?php
session_start();
?>
Krok 2: ustaw dane w sesji po „zalogowaniu” (na start w formie uproszczonej):
<?php
session_start();
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$login = $_POST["login"] ?? "";
$haslo = $_POST["haslo"] ?? "";
if ($login === "admin" && $haslo === "tajne") {
$_SESSION["zalogowany"] = true;
$_SESSION["login"] = $login;
header("Location: panel.php");
exit;
} else {
$komunikat = "Nieprawidłowe dane logowania.";
}
}
?>
Krok 3: w chronionym pliku panel.php sprawdź sesję:
Najczęściej zadawane pytania (FAQ)
Czy w 2024 roku w ogóle opłaca się uczyć PHP jako początkujący webmaster?
Tak, jeśli chcesz tworzyć typowe strony WWW dla klientów: firmowe wizytówki, blogi, proste sklepy czy serwisy contentowe. Ogromna część internetu nadal działa na PHP, a najpopularniejsze CMS-y (WordPress, Drupal, Joomla) są napisane właśnie w tym języku.
PHP jest też standardem na tanich hostingach współdzielonych, więc możesz szybko wdrażać projekty bez drogiej infrastruktury. Dla kogoś, kto chce zacząć zarabiać na tworzeniu stron, to często najszybsza i najprostsza ścieżka.
Co sprawdzić: czy typ zleceń, które Cię interesują (np. strony pod WordPressa), faktycznie używa PHP. Jeśli tak – nauka ma bezpośrednie przełożenie na pracę.
Od czego zacząć naukę PHP w 2024 roku krok po kroku?
Krok 1: opanuj podstawy HTML i CSS – zrób przynajmniej jedną ładnie ułożoną, statyczną stronę z formularzem (np. prostą wizytówkę). Bez tego trudno sensownie osadzić kod PHP w projekcie.
Krok 2: zrozum, jak działa WWW – request, response, rola serwera i przeglądarki. Wtedy łatwiej ogarnąć, co tak naprawdę robi skrypt PHP po stronie serwera.
Krok 3: dopiero potem wchodź w składnię PHP 8.x: zmienne, instrukcje warunkowe, funkcje, podstawy pracy z formularzami oraz połączenie z bazą danych przez PDO. Na tym fundamencie można budować dalsze umiejętności.
Co sprawdzić: czy potrafisz samodzielnie zbudować statyczną stronę z formularzem i wyjaśnić własnymi słowami, czym jest żądanie i odpowiedź HTTP.
Jaką wersję PHP wybrać na start i jak unikać starych poradników?
Na początek celuj w PHP 8.1 lub 8.2 – to aktualne i powszechnie dostępne wersje. Dają dostęp do nowoczesnych funkcji języka, lepszej wydajności i czytelniejszej obsługi błędów niż stare wydania.
Aby omijać nieaktualne materiały, zwracaj uwagę na:
- datę publikacji (szukaj treści z ostatnich 2–3 lat),
- użycie PDO i przygotowanych zapytań zamiast funkcji
mysql_*, - przykłady z typowaniem parametrów i zwracanych wartości, obsługą wyjątków i OOP.
Poradniki, które mieszają ogromne bloki PHP z HTML-em i ignorują bezpieczeństwo, lepiej odpuścić.
Co sprawdzić: czy kurs lub książka, z której korzystasz, wyraźnie wspomina o PHP 8.x, PDO i programowaniu obiektowym.
Czy przed PHP muszę znać JavaScript i w jakim stopniu?
Na start wystarczy podstawowy JavaScript: zmienne, proste funkcje, obsługa zdarzeń (np. kliknięcie przycisku) oraz wysyłanie zapytań fetch/AJAX. Taki poziom pozwala zrozumieć, jak frontend dogaduje się z backendem napisanym w PHP.
PHP działa na serwerze, więc nie zastąpi prostych walidacji formularza w przeglądarce czy interakcji „bez przeładowania strony”. Dlatego minimalna znajomość JS porządkuje myślenie: co robi przeglądarka, a co ma wykonać serwer.
Co sprawdzić: czy potrafisz:
- napisać prostą walidację formularza w JS,
- wysłać zapytanie fetch do skryptu PHP i wyświetlić odpowiedź (np. JSON) w konsoli.
Kiedy PHP jest dobrym wyborem, a kiedy lepiej uczyć się innego języka?
PHP sprawdza się świetnie, gdy celem są:
- strony firmowe, blogi, portale treści,
- proste sklepy internetowe, systemy rezerwacji, panele administracyjne,
- motywy i wtyczki do WordPressa lub innych CMS-ów.
W takich projektach liczy się głównie szybkie wdrożenie, tanie utrzymanie i duża liczba gotowych rozwiązań.
Jeśli celujesz w zaawansowane aplikacje SPA, data science, mikroserwisy o bardzo wysokich wymaganiach wydajnościowych czy IoT, częściej pojawią się tam JavaScript/Node.js, Python, Go lub Rust. Wtedy PHP może być dodatkiem, ale nie głównym narzędziem.
Co sprawdzić: wypisz 3–5 typów projektów, które chcesz robić w najbliższych miesiącach, i zobacz, w jakich technologiach są realnie tworzone na rynku.
Jak sprawdzić, czy mój hosting nadaje się do nauki i pracy z PHP w 2024?
Krok 1: w panelu hostingu znajdź informację o wersji PHP. Szukaj co najmniej 8.1 lub 8.2. Starsze wersje (np. 7.x) oznaczają, że hosting jest w tyle z aktualizacjami.
Krok 2: upewnij się, że masz dostęp do bazy danych MySQL lub MariaDB oraz możliwość tworzenia kilku baz – przyda się przy testowaniu różnych projektów.
Krok 3: sprawdź, czy hosting umożliwia zmianę wersji PHP z poziomu panelu oraz czy ma podstawowe logi błędów. Bez tego diagnozowanie problemów jest dużo trudniejsze.
Co sprawdzić: czy możesz:
- ustawić w panelu wersję PHP 8.1+ dla swojej domeny,
- założyć bazę danych i połączyć się z nią prostym skryptem PHP.
Jakie typowe błędy popełniają początkujący przy nauce PHP?
Najczęstsze problemy to:
- uczenie się z przestarzałych materiałów (PHP 5.x, brak PDO, brak OOP),
- brak solidnej podstawy w HTML/CSS i próba „skakania” od razu w zaawansowane skrypty,
- mieszanie ogromnych bloków PHP i HTML w jednym pliku bez ładu i składu.
Te błędy szybko mszczą się w momencie, gdy projekt trzeba rozbudować lub przekazać innej osobie.
Lepsze podejście to: najpierw przejrzysta struktura HTML/CSS, potem małe, logiczne fragmenty PHP, podział na pliki, stopniowe wprowadzanie pracy z bazą i wyjątkami. Mniejszy, ale dobrze zorganizowany projekt daje więcej niż „kombajn” poskładany z przypadkowych poradników.
Co sprawdzić: czy Twój pierwszy projekt w PHP:
- ma osobny plik CSS,
- używa PDO do pracy z bazą,
- nie trzyma całej logiki w jednym, gigantycznym pliku
index.php.
Kluczowe Wnioski
- PHP w 2024 roku nadal jest mocno obecne w praktycznych projektach WWW – zasila WordPressa, Drupala, Joomlę, fora, sklepy i systemy rezerwacji, więc dla początkującego webmastera oznacza realne zlecenia, a nie tylko naukę „do szuflady”.
- Nowoczesne PHP 8.x to zupełnie inna jakość niż „stare” PHP 5.x – ścisłe typowanie, lepsza obsługa wyjątków i wydajność sprawiają, że kod jest bardziej przewidywalny, a błędy łatwiejsze do wychwycenia.
- Krok 1 przy nauce: świadomie wybieraj materiały aktualne dla PHP 8.x i unikaj poradników pod PHP 5.x / wczesne 7.x, które uczą mieszania HTML z dużymi blokami PHP, starych funkcji mysql_* i ignorowania bezpieczeństwa.
- PHP ma największy sens przy typowo webmasterskich projektach: strony firmowe, blogi, proste sklepy, systemy rezerwacji i integracje z WordPressem; przy SPA i karierze front-end ciężar nauki przesuwa się w stronę JavaScriptu i frameworków JS.
- Istnieją obszary, gdzie lepiej wybrać inne technologie (Go, Rust, Python, Node.js) – zwłaszcza mikroserwisy o bardzo wysokich wymaganiach wydajnościowych, data science czy IoT – więc kierunek nauki trzeba dopasować do typu projektów, a nie do „mody”.
- Fundamentem przed pierwszym skryptem PHP są solidne podstawy HTML i CSS: poprawna struktura dokumentu, czytelny kod, formularze oraz podstawowe stylowanie; prosta statyczna wizytówka to dobry test gotowości na backend.






