PHP w kwalifikacji INF.03: najważniejsze zasady, przykłady i powiązane pytania w banku. Skrót działu, który otwiera osiem lekcji o PHP od pierwszego skryptu po połączenie z bazą.
PHP jest technologią często używaną w pytaniach i arkuszach INF.03. Służy do odbierania formularzy, pracy z sesją i komunikacji z MySQL. W konkretnym zadaniu zawsze kieruj się jego treścią i wymaganiami.
Dane, warunki i tablice
Zmienna zaczyna się od $, a tablica może używać indeksów liczbowych lub kluczy tekstowych. Po elementach przechodzi się pętlą foreach:
===
porównanie wartości i typu
count($tab)
liczba elementów tablicy
strlen($tekst)
długość tekstu
array_key_exists($k, $tab)
czy klucz istnieje
if wybiera gałąź kodu, while powtarza dopóki warunek jest prawdziwy, a for sprawdza się przy znanej liczbie powtórzeń. Własna funkcja powinna przyjmować dane jako parametry i zwracać wynik przez return, zamiast polegać na zmiennych globalnych.
Formularze i dane użytkownika
Parametr wysłany metodą GET jest w $_GET, metodą POST w $_POST. Przed użyciem sprawdź, czy istnieje, a potem zweryfikuj format i zakres:
if (isset($_POST["email"]) && $_POST["email"] !== "") {
$email = $_POST["email"];
}
Walidacja HTML pomaga użytkownikowi, ale serwer musi wykonać własną kontrolę. Dane wyświetlane ponownie w HTML koduj przez htmlspecialchars(). Nie ufaj wartościom z $_GET, $_POST, $_COOKIE ani nagłówków: filtrowanie wyświetlania i zabezpieczenie zapytania SQL to dwa osobne działania. Skąd biorą się te dane, tłumaczy artykuł o formularzach. MySQL i prepared statements
Połączenie z bazą otwiera się raz, na początku skryptu:
$db = new mysqli("localhost", "uzytkownik", "haslo", "sklep");
if ($db->connect_error) {
die("Blad polaczenia");
}
$db->set_charset("utf8mb4");
Zapytanie bez danych użytkownika może iść przez query(), a wynik czyta fetch_assoc().
Wartości od użytkownika przekazuje się wyłącznie przez prepared statement:
$stmt = $db->prepare("SELECT id FROM klient WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
Wartość jedzie osobno od składni SQL, co chroni przed wstrzyknięciem SQL w miejscu parametru. Same zapytania i JOIN-y opisuje artykuł o SQL. Sesja, ciasteczka i nagłówki
session_start() uruchamia lub wznawia sesję i musi zostać wywołane przed wysłaniem treści odpowiedzi. Dane w $_SESSION leżą po stronie serwera, a przeglądarka przesyła tylko identyfikator sesji w ciasteczku. Zwykłe ciasteczko jest przechowywane po stronie klienta i ma określony czas ważności.
header() i setcookie() również wymagają, żeby nagłówki nie zostały wcześniej wysłane: przypadkowy tekst lub spacja przed otwarciem PHP powoduje błąd. Po przekierowaniu zakończ skrypt:
header("Location: lista.php");
exit;
Bez exit dalszy kod wykona się w tle. Zadania z PHP w części praktycznej to zwykle obsługa formularza plus zapis do bazy: przećwicz cały łańcuch na arkuszach INF.03. Lekcje działu
Każdy skrypt z tych lekcji przejdziesz w przeglądarce krok po kroku w interpreterze PHP: po każdej instrukcji widać wartości zmiennych i to, co skrypt zdążył wypisać. Zapytania, które te skrypty wysyłają do bazy, omawia dział SQL: skrót o SQL.