PHP w ćwiczeniach
Cookies, sesje, praca z bazą danych i walidacja formularzy. Każdy temat to krótkie wprowadzenie, ćwiczenia z gotowym kodem i podsumowanie.
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
- Rozpoczynanie sesji:
session_start() - Przechowywanie danych:
$_SESSION['nazwa'] = wartość - Odczyt danych:
$_SESSION['nazwa'] - Usuwanie danych:
session_unset()isession_destroy() - Sesje są przechowywane po stronie serwera, co zwiększa bezpieczeństwo w porównaniu do cookie
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
- Łączenie się z bazą danych:
new mysqli()lubPDO - Wysyłanie zapytań SQL:
SELECT, INSERT, UPDATE, DELETE - Pobieranie wyników:
fetch_assoc()dla MySQLi,fetch()dla PDO - Sprawdzanie błędów:
$conn->error
Ć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ć:
- Komentarze w kodzie:
// komentarz,/* komentarz */ - Generatory dokumentacji, np. phpDocumentor
- Pliki README, diagramy, diagramy przepływu, instrukcje użytkownika
<?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
- Sesje pozwalają przechowywać dane użytkownika między stronami
- PHP może komunikować się z bazą danych i dynamicznie wyświetlać jej zawartość
- Dokumentowanie kodu jest niezbędne dla utrzymania i zrozumiałości projektów
- Ćwiczenia praktyczne pomagają w nauce PHP i przygotowują do tworzenia rzeczywistych aplikacji
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
- Używaj
trim()ihtmlspecialchars()do oczyszczenia danych - Sprawdzaj format danych (np.
FILTER_VALIDATE_EMAIL) - Chroń bazę danych przez prepared statements
- Walidacja po stronie serwera jest obowiązkowa, nawet jeśli używasz walidacji po stronie klienta
- Zbieraj wszystkie błędy i wyświetlaj je użytkownikowi w czytelny sposób
Te ćwiczenia uczą, jak tworzyć bezpieczne i poprawne formularze w PHP oraz jak chronić dane przed niepoprawnym użyciem i atakami.