Ćwiczenie 10 – Widoki i bezpieczeństwo SQL

Polecenie

Baza danych sklepu ma widok dla menadżera i ochronę przed SQL Injection.

Kod SQL – tworzenie widoku

CREATE VIEW produkty_dostepne AS
SELECT id, nazwa, cena, ilosc
FROM produkty
WHERE ilosc > 0;
            

Kod PHP – pobieranie danych z widoku

<?php
$pdo = new PDO("mysql:host=localhost;dbname=sklep", "root", "");

// Pobieranie produktów z widoku
$stmt = $pdo->query("SELECT * FROM produkty_dostepne");
$produkty = $stmt->fetchAll();

echo "<h2>Dostępne produkty</h2>";
foreach ($produkty as $p) {
    echo $p['nazwa']." - ".$p['cena']." zł (Ilość: ".$p['ilosc'].")<br>";
}
?>
            

Kod PHP – bezpieczne logowanie (PDO)

<?php
$pdo = new PDO("mysql:host=localhost;dbname=sklep", "root", "");

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $login = $_POST['login'];
    $haslo = $_POST['haslo'];

    $stmt = $pdo->prepare("SELECT * FROM uzytkownicy WHERE login = :login AND haslo = :haslo");
    $stmt->execute(['login' => $login, 'haslo' => $haslo]);
    $user = $stmt->fetch();

    if ($user) {
        echo "Zalogowano pomyślnie!";
    } else {
        echo "Błędny login lub hasło.";
    }
}
?>