Pliki cookies w PHP

Pliki cookies są małymi plikami przechowywanymi po stronie przeglądarki użytkownika. PHP pozwala je tworzyć, odczytywać i usuwać za pomocą funkcji setcookie() oraz $_COOKIE. Cookies są przydatne do przechowywania np. ustawień użytkownika, sesji logowania czy preferencji strony.

Ćwiczenie 1 — Tworzenie prostego cookie

Utwórz cookie, które przechowuje nazwę użytkownika przez 1 dzień:

<?php
$cookie_name = "user";
$cookie_value = "Janusz";
setcookie($cookie_name, $cookie_value, time() + 86400, "/"); // 86400 sekund = 1 dzień
?>
  

Po zapisaniu tego kodu w pliku PHP i odświeżeniu strony, cookie zostanie utworzone.

Ćwiczenie 2 — Odczytywanie cookie

Sprawdź, czy cookie istnieje i wyświetl jego wartość:

<?php
if(isset($_COOKIE["user"])) {
    echo "Witaj, " . $_COOKIE["user"];
} else {
    echo "Cookie nie zostało ustawione.";
}
?>
  

Ćwiczenie 3 — Usuwanie cookie

Usuń cookie ustawione wcześniej:

<?php
setcookie("user", "", time() - 3600, "/"); // ustawienie czasu w przeszłości usuwa cookie
echo "Cookie zostało usunięte.";
?>
  

Ćwiczenie 4 — Cookies z parametrami dodatkowymi

Możesz ustawić cookie z dodatkowymi opcjami, np. Secure, HttpOnly:

<?php
setcookie(
    "secureCookie", 
    "tajna_wartosc", 
    [
        'expires' => time() + 3600,
        'path' => '/',
        'domain' => 'twojastrona.pl',
        'secure' => true,    // tylko HTTPS
        'httponly' => true,  // niedostępne w JS
        'samesite' => 'Strict'
    ]
);
echo "Bezpieczne cookie zostało ustawione.";
?>
  

Podsumowanie

Ćwiczenia pozwalają uczniom zrozumieć jak działają cookie i jak je bezpiecznie stosować w aplikacjach PHP.

Obsługa sesji w PHP

Sesje w PHP pozwalają na przechowywanie danych użytkownika między różnymi stronami. W przeciwieństwie do cookie, dane sesyjne przechowywane są po stronie serwera, a przeglądarka otrzymuje tylko identyfikator sesji (session ID).

Ćwiczenie 1 — Rozpoczęcie sesji i zapis danych

Utwórz sesję i zapisz w niej imię użytkownika:

<?php
session_start(); // rozpoczęcie sesji
$_SESSION['username'] = 'Janusz';
echo "Sesja rozpoczęta, imię zapisane w sesji.";
?>
  

Ćwiczenie 2 — Odczytywanie danych z sesji

Sprawdź, czy sesja istnieje i wyświetl zapisane dane:

<?php
session_start();
if(isset($_SESSION['username'])) {
    echo "Witaj, " . $_SESSION['username'];
} else {
    echo "Sesja nie została ustawiona.";
}
?>
  

Ćwiczenie 3 — Modyfikowanie danych w sesji

Zmień wartość zmiennej sesyjnej:

<?php
session_start();
$_SESSION['username'] = 'Zenek';
echo "Sesja zaktualizowana, nowe imię: " . $_SESSION['username'];
?>
  

Ćwiczenie 4 — Usuwanie sesji

Usuń wszystkie dane sesyjne i zakończ sesję:

<?php
session_start();
session_unset(); // usuwa wszystkie zmienne sesji
session_destroy(); // kończy sesję
echo "Sesja została zakończona i wszystkie dane usunięte.";
?>
  

Ćwiczenie 5 — Licznik odwiedzin strony

Przykład wykorzystania sesji do zliczania odwiedzin:

<?php
session_start();
if(!isset($_SESSION['visits'])) {
    $_SESSION['visits'] = 0;
}
$_SESSION['visits']++;
echo "Odwiedziłeś tę stronę " . $_SESSION['visits'] . " razy.";
?>
  

Podsumowanie

Te ćwiczenia pozwalają zrozumieć działanie sesji i wykorzystanie ich w praktycznych aplikacjach PHP, np. logowaniu, licznikach odwiedzin czy koszykach zakupowych.

Wysyłanie zapytań do bazy danych i wyświetlanie wyników w PHP

PHP umożliwia komunikację z bazami danych (np. MySQL, MariaDB) za pomocą funkcji mysqli lub obiektów PDO. Dzięki temu możemy pobierać, dodawać, modyfikować i usuwać dane w bazie oraz wyświetlać je dynamicznie na stronach internetowych.

Ćwiczenie 1 — Połączenie z bazą danych (MySQLi)

Utwórz połączenie z bazą danych:

<?php
$host = "localhost";
$user = "root";
$password = "";
$database = "sklep";

// Tworzenie połączenia
$conn = new mysqli($host, $user, $password, $database);

// Sprawdzenie połączenia
if ($conn->connect_error) {
    die("Błąd połączenia: " . $conn->connect_error);
}
echo "Połączono z bazą danych!";
?>
  

Ćwiczenie 2 — Pobieranie danych z tabeli

Pobierz wszystkie produkty z tabeli Produkty i wyświetl:

<?php
$sql = "SELECT ID, Nazwa, Cena, Ilosc FROM Produkty";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["ID"] . " | ";
        echo "Nazwa: " . $row["Nazwa"] . " | ";
        echo "Cena: " . $row["Cena"] . " | ";
        echo "Ilość: " . $row["Ilosc"] . "<br>";
    }
} else {
    echo "Brak produktów w bazie.";
}
?>
  

Ćwiczenie 3 — Dodawanie danych do tabeli

Dodaj nowy produkt do tabeli Produkty:

<?php
$sql = "INSERT INTO Produkty (Nazwa, Cena, Ilosc) VALUES ('Kask Motocyklowy', 299.99, 5)";
if ($conn->query($sql) === TRUE) {
    echo "Nowy produkt dodany!";
} else {
    echo "Błąd: " . $conn->error;
}
?>
  

Ćwiczenie 4 — Modyfikowanie danych

Zaktualizuj cenę produktu o ID = 1:

<?php
$sql = "UPDATE Produkty SET Cena = 349.99 WHERE ID = 1";
if ($conn->query($sql) === TRUE) {
    echo "Produkt zaktualizowany!";
} else {
    echo "Błąd: " . $conn->error;
}
?>
  

Ćwiczenie 5 — Usuwanie danych

Usuń produkt o ID = 1:

<?php
$sql = "DELETE FROM Produkty WHERE ID = 1";
if ($conn->query($sql) === TRUE) {
    echo "Produkt usunięty!";
} else {
    echo "Błąd: " . $conn->error;
}
?>
  

Podsumowanie

Ćwiczenia pozwalają uczniom praktycznie wykorzystać PHP do dynamicznej pracy z bazą danych, co jest fundamentem każdej aplikacji webowej.

Ćwiczenia w wykorzystaniu skryptów PHP na stronach internetowych

PHP jest językiem skryptowym działającym po stronie serwera. Pozwala tworzyć dynamiczne strony internetowe, obsługiwać formularze, zarządzać sesjami i bazami danych oraz generować treści dopasowane do użytkownika.

1. Obsługa sesji w skryptach PHP

Sesje pozwalają na przechowywanie danych użytkownika między różnymi stronami.

<?php
session_start();
if(!isset($_SESSION['visits'])) {
    $_SESSION['visits'] = 0;
}
$_SESSION['visits']++;
echo "Odwiedziłeś tę stronę " . $_SESSION['visits'] . " razy.";
?>
  

Ćwiczenie: Zaimplementuj licznik odwiedzin oraz przywitanie użytkownika, zapisując jego imię w sesji.

2. Wysyłanie zapytań do bazy i ich wyświetlanie

PHP umożliwia komunikację z bazą danych MySQL lub MariaDB za pomocą mysqli lub PDO.

<?php
$host = "localhost";
$user = "root";
$password = "";
$database = "sklep";
$conn = new mysqli($host, $user, $password, $database);
if ($conn->connect_error) die("Błąd połączenia: " . $conn->connect_error);

$sql = "SELECT ID, Nazwa, Cena FROM Produkty";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
    echo $row['ID'] . " | " . $row['Nazwa'] . " | " . $row['Cena'] . "<br>";
}
?>
  

Ćwiczenie: Dodaj formularz, który pozwoli użytkownikowi wprowadzać nowy produkt do tabeli i wyświetlić wszystkie produkty po dodaniu.

3. Aplikacje wspomagające dokumentowanie programów

Dokumentowanie programów jest ważne w pracy zespołowej i przy tworzeniu dużych projektów. Można stosować:

<?php
/**
 * Funkcja dodaje dwa liczby i zwraca wynik
 * @param int $a pierwsza liczba
 * @param int $b druga liczba
 * @return int suma liczb
 */
function suma($a, $b) {
    return $a + $b;
}
echo suma(5, 7);
?>
  

Ćwiczenie: Udokumentuj swoją funkcję w stylu PHPDoc i wygeneruj dokumentację HTML za pomocą phpDocumentor.

Podsumowanie

Walidacja formularzy i podstawowe zabezpieczenia w PHP

Walidacja formularzy jest kluczowa, aby upewnić się, że użytkownicy wprowadzają poprawne dane. Dzięki temu można zapobiegać błędom, wstrzyknięciom SQL i innym atakom.

Ćwiczenie 1 — Walidacja prostego formularza (metoda POST)

Utwórz formularz, który sprawdzi, czy użytkownik wpisał imię:

<form method="post" action="walidacja.php">
  Imię: <input type="text" name="imie">
  <input type="submit" value="Wyślij">
</form>

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $imie = trim($_POST["imie"]);
    if(empty($imie)) {
        echo "Proszę wpisać imię!";
    } else {
        echo "Witaj, " . htmlspecialchars($imie);
    }
}
?>
  

Ćwiczenie 2 — Sprawdzenie adresu e-mail

Walidacja formatu e-mail:

<?php
$email = "jan.kowalski@example.com";
if(filter_var($email, FILTER_VALIDATE_EMAIL)) {
    echo "Adres e-mail jest poprawny.";
} else {
    echo "Adres e-mail jest niepoprawny.";
}
?>
  

Ćwiczenie 3 — Zabezpieczenie danych przed SQL Injection

Użyj przygotowanych zapytań (prepared statements) w MySQLi:

<?php
$conn = new mysqli("localhost", "root", "", "sklep");
$stmt = $conn->prepare("INSERT INTO Produkty (Nazwa, Cena) VALUES (?, ?)");
$stmt->bind_param("sd", $nazwa, $cena);

$nazwa = "Kask Motocyklowy";
$cena = 299.99;
$stmt->execute();

echo "Produkt dodany bezpiecznie!";
$stmt->close();
$conn->close();
?>
  

Ćwiczenie 4 — Sprawdzenie długości tekstu i zakresu liczby

Przykład walidacji długości hasła i wieku użytkownika:

<?php
$haslo = "tajne123";
$wiek = 20;

if(strlen($haslo) < 6) {
    echo "Hasło jest za krótkie.";
} elseif($wiek < 18 || $wiek > 99) {
    echo "Nieprawidłowy wiek.";
} else {
    echo "Dane poprawne!";
}
?>
  

Ćwiczenie 5 — Obsługa wielu błędów w formularzu

Wyświetl wszystkie błędy w jednym formularzu:

<?php
$errors = [];
if(empty($_POST['imie'])) $errors[] = "Imię jest wymagane.";
if(empty($_POST['email'])) $errors[] = "Email jest wymagany.";
elseif(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) $errors[] = "Niepoprawny email.";

if(count($errors) > 0) {
    foreach($errors as $error) {
        echo "<p style='color:red'>$error</p>";
    }
} else {
    echo "Wszystkie dane poprawne!";
}
?>
  

Podsumowanie

Te ćwiczenia uczą, jak tworzyć bezpieczne i poprawne formularze w PHP oraz jak chronić dane przed niepoprawnym użyciem i atakami.