Čtvrtek , 26 Červen 2025
Domů Programování PHP Školní informační systém v PHP
PHPProgramování

Školní informační systém v PHP

blank
blank

Vytvoření kompletního školního informačního systému je rozsáhlý projekt, který vyžaduje řadu funkcí a zvažování bezpečnosti. Zde je základní kostra PHP skriptu, který vám poskytne směr, jak začít. Tento příklad zahrnuje přihlášení a registraci uživatelů, přidávání nápadů a přihlašování se na kurzy.

Struktura databáze (MySQL). Tento kód vytvoří následující čtyři databázové tabulky: uzivatele, napady, kurzy a registrace_kurzu

CREATE TABLE uzivatele (
    id INT AUTO_INCREMENT PRIMARY KEY,
    uzivatelske_jmeno VARCHAR(255) NOT NULL,
    heslo VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL,
    role ENUM('student', 'ucitel') NOT NULL
);

CREATE TABLE napady (
    id INT AUTO_INCREMENT PRIMARY KEY,
    uzivatel_id INT NOT NULL,
    nazev VARCHAR(255) NOT NULL,
    popis TEXT NOT NULL,
    FOREIGN KEY (uzivatel_id) REFERENCES uzivatele(id)
);

CREATE TABLE kurzy (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nazev VARCHAR(255) NOT NULL,
    popis TEXT NOT NULL
);

CREATE TABLE registrace_kurzu (
    id INT AUTO_INCREMENT PRIMARY KEY,
    uzivatel_id INT NOT NULL,
    kurz_id INT NOT NULL,
    FOREIGN KEY (uzivatel_id) REFERENCES uzivatele(id),
    FOREIGN KEY (kurz_id) REFERENCES kurzy(id)
);

Vytvořte soubor config.php pro připojení k databázi:

<?php
$nazevServeru = "localhost";
$uzivatelskeJmeno = "jmeno_databaze";
$heslo = "heslo_databaze";
$nazevDatabaze = "nazev_databaze";

$conn = new mysqli($nazevServeru, $uzivatelskeJmeno, $heslo, $nazevDatabaze);

if ($conn->connect_error) {
    die("Připojení selhalo: " . $conn->connect_error);
}
?>

Vytvořte soubor login.php pro přihlášení uživatelů:

<?php
require_once 'config.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $uzivatelskeJmeno = $_POST["uzivatelske_jmeno"];
    $heslo = $_POST["heslo"];

    $sql = "SELECT * FROM uzivatele WHERE uzivatelske_jmeno = ?";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("s", $uzivatelskeJmeno);
    $stmt->execute();
    $result = $stmt->get_result();
    $uzivatel = $result->fetch_assoc();

    if ($uzivatel && password_verify($heslo, $uzivatel["heslo"])) {
        session_start();
        $_SESSION["uzivatel_id"] = $uzivatel["id"];
        $_SESSION["uzivatelske_jmeno"] = $uzivatel["uzivatelske_jmeno"];
        $_SESSION["role"] = $uzivatel["role"];

        header("Location: dashboard.php");
        exit;
    } else {
        echo "Neplatné uživatelské jméno nebo heslo.";
    }
}
?>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
    <label for="uzivatelske_jmeno">Uživatelské jméno:</label>
    <input type="text" name="uzivatelske_jmeno" required>
    <br>
    <label for="heslo">Heslo:</label>
    <input type="password" name="heslo" required>
    <br>
    <input type="submit" value="Přihlásit se">
</form>

Vytvořte soubor register.php pro registraci uživatelů:

<?php
require_once 'config.php';

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $uzivatelskeJmeno = $_POST["uzivatelske_jmeno"];
    $heslo = $_POST["heslo"];
    $email = $_POST["email"];
    $role = $_POST["role"];

    $zahashovaneHeslo = password_hash($heslo, PASSWORD_DEFAULT);

    $sql = "INSERT INTO uzivatele (uzivatelske_jmeno, heslo, email, role) VALUES (?, ?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssss", $uzivatelskeJmeno, $zahashovaneHeslo, $email, $role);
    $result = $stmt->execute();

    if ($result) {
        header("Location: prihlaseni.php");
        exit;
    } else {
        echo "Chyba: " . $sql . "<br>" . $conn->error;
    }
}
?>

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
    <label for="uzivatelske_jmeno">Uživatelské jméno:</label>
    <input type="text" name="uzivatelske_jmeno" required>
    <br>
    <label for="heslo">Heslo:</label>
    <input type="password" name="heslo" required>
    <br>
    <label for="email">Email:</label>
    <input type="email" name="email" required>
    <br>
    <label for="role">Role:</label>
    <select name="role" required>
        <option value="student">Student</option>
        <option value="ucitel">Učitel</option>
    </select>
    <br>
    <input type="submit" value="Registrovat">
</form>

Vytvořte soubor dashboard.php pro zobrazení seznamu kurzů a možnosti přidání nápadů:

<?php
session_start();
require_once 'config.php';

if (!isset($_SESSION["user_id"])) {
    header("Location: prihlaseni.php");
    exit;
}

if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["odeslat_napad"])) {
    $nazev = $_POST["nazev"];
    $popis = $_POST["popis"];

    $sql = "INSERT INTO napady (user_id, nazev, popis) VALUES (?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("iss", $_SESSION["user_id"], $nazev, $popis);
    $stmt->execute();
}

if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["registrovat_kurz"])) {
    $course_id = $_POST["course_id"];

    $sql = "INSERT INTO registrace_kurzu (user_id, course_id) VALUES (?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ii", $_SESSION["user_id"], $course_id);
    $stmt->execute();
}

$sql = "SELECT * FROM kurzy";
$result = $conn->query($sql);
$kurzy = $result->fetch_all(MYSQLI_ASSOC);
?>

<!DOCTYPE html>
<html lang="cs">
<head>
    <meta charset="UTF-8">
    <title>Nástěnka</title>
</head>
<body data-rsssl=1>
    <h1>Vítejte, <?php echo $_SESSION["username"]; ?></h1>

    <h2>Předložte svůj nápad</h2>
    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
        <label for="nazev">Název:</label>
        <input type="text" name="nazev" required>
        <br>
        <label for="popis">Popis:</label>
        <textarea name="popis" required></textarea>
        <br>
        <input type="submit" name="odeslat_napad" value="Odeslat nápad">
    </form>

    <h2>Kurzy</h2>
    <table>
        <thead>
            <tr>
                <th>Název</th>
                <th>Popis</th>
                <th>Akce</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($kurzy as $kurz) : ?>
                <tr>
                    <td><?php echo $kurz["nazev"]; ?></td>
                    <td><?php echo $kurz["popis"]; ?></td>
                    <td>
                        <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">
                            <input type="hidden" name="course_id" value="<?php echo $kurz["id"]; ?>">
                            <input type="submit" name="registrovat_kurz" value="Registrovat">
                        </form>
                    </td>
                </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
</body>
</html>

Tato kostra kódu představuje základní funkcionalitu školního informačního systému. Je zde mnoho dalších funkcí, které byste mohli přidat, jako je správa uživatelů, správa kurzů, komunikace mezi učiteli a žáky, sledování úspěšnosti žáků atd. Ujistěte se, že implementujete bezpečnostní opatření, jako je ochrana proti SQL injection, kontrola přístupových práv a validace vstupů na straně klienta a serveru.

Zanechte komentář

Napsat komentář

Související články

blank
ProgramováníStrojové učeníUmělá inteligence

Neuromorfní čipy vs. GPU/TPU

Top články Neuromorfní čipy vs. GPU/TPU 19. 6. 2025 Edge-AI v IoT:...

blank
ProgramováníPython

MIDI generator in Python

Description of the Python ScriptThis Python script generates a MIDI file based...

blank
PHPWordPress

AI Birthday Wishes Generator WordPress Plugin

The  AI Birthday Wishes Generator is a  WordPress plugin that allows users to generate personalized birthday wishes...

blank
PHPProgramováníWordPress

AI Song Maker WordPress Plugin

The  AI Song Maker is a  WordPress plugin that allows you to generate custom songs based on...