<?php
/**
* @file login.php
* @brief Přihlašovací formulář pro administrátory a jeho zpracování.
*
* Tento skript:
* - Zpracovává POST požadavek z přihlašovacího formuláře (uživatelské jméno a heslo).
* - Provádí ochranu proti SQL injekcím pomocí stripslashes a real_escape_string.
* - Vyhledává uživatele v databázové tabulce 'user' na základě zadaného uživatelského jména a hesla.
* - Při úspěšném přihlášení nastavuje session proměnné (loggedin, id, username) a přesměrovává na admin.php.
* - Při neúspěšném přihlášení zobrazuje chybovou zprávu "Invalid username or password".
*/
include 'db_connection.php';
session_start();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// Zkontroluje, zda jsou odeslány uživatelské jméno a heslo
if (isset($_POST['username'], $_POST['password'])) {
$username = $_POST['username'];
$password = $_POST['password'];
// Ochrana proti SQL injekcím
$username = stripslashes($username);
$password = stripslashes($password);
$username = $conn->real_escape_string($username);
$password = $conn->real_escape_string($password);
$sql = "SELECT id, username FROM user WHERE username='$username' and password='$password'";
$result = $conn->query($sql);
if ($result->num_rows == 1) {
$row = $result->fetch_assoc();
$_SESSION['loggedin'] = true;
$_SESSION['id'] = $row['id'];
$_SESSION['username'] = $row['username'];
header("location:admin.php");
exit;
} else {
$error = "Invalid username or password";
}
}
}
?>
<!DOCTYPE html>
<html lang="cs">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Přihlášení</title>
<link
href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"
rel="stylesheet" />
<link rel="stylesheet" href="css/login.css" />
<link rel="icon" href="media/logo-oaza2.png" type="image/x-icon" />
</head>
<body>
<div class="container">
<div class="row">
<div class="col-12">
<img src="media/logo-oaza2.png" alt="">
<form action="login.php" method="post">
<?php if (isset($error)) {
echo '<div class="alert alert-danger">' . $error . '</div>';
} ?>
<div class="row">
<div class="col-12 formParts"><label for="username"><b>Uživatelské jméno</b></label></div>
<div class="col-12 formParts">
<input type="text" placeholder="Zadejte uživatelské jméno" id="username" name="username" required>
</div>
<div class="col-12 formParts"><label for="password"><b>Heslo</b></label></div>
<div class="col-12 formParts">
<input type="password" placeholder="Zadejte heslo" id="password" name="password" required>
</div>
<div class="col-12 formParts text-right "><button type="submit">Přihlásit</button></div>
</div>
</form>
</div>
</div>
</div>
</body>
</html>