Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

График на изпитите — Транспортен факултет, РУ „Ангел Кънчев“

Публична платформа за графика на изпитите с администраторски панел, роли и пълен одит дневник. Написана на чист PHP 8 + MySQL/MariaDB, без външни зависимости и без Composer — качва се директно в public_html на споделен хостинг (SuperHosting.bg).

  • Публична част — видима без вход, оптимизирана първо за телефон, с търсене и филтри.
  • Панел за управление — две роли: Публикуващ (само изпити и учебни данни) и Администратор (всичко).
  • Одит дневник — записва всяко влизане, редакция, публикуване и посещение; видим само за администратор.
  • Език — целият интерфейс, съобщенията за грешки и документацията са на български.

Възможности

За студентите (без регистрация)

Функция Описание
График на изпитите Групиране по дата, ясно означени отменени изпити и „след N дни“
Търсене По дисциплина, преподавател, зала, код на дисциплината
Филтри Курс (1–4 и магистри), специалност, група, форма на обучение (редовно/задочно), вид изпит, период
Страница на изпит Пълна информация — дата, час, зала, корпус, изпитващ, форма на провеждане, бележки
Експорт CSV файл и календар (.ics) за добавяне в телефона
Информация Страница с често задавани въпроси и контакти
Мобилна оптимизация Mobile-first CSS, сгъваем панел с филтри, четими карти на изпитите

За преподавателите и инспекторите (роля „Публикуващ“)

  • Създаване, редакция, копиране и изтриване на изпити.
  • Публикуване / връщане в чернова — черновите не се виждат публично.
  • Означаване на изпит като отменен (остава видим, но с ясно обозначение).
  • Управление на дисциплини, специалности и учебни групи.
  • Смяна на собствената парола.

За администратора

Всичко от горното, плюс:

  • Потребители — създаване, роля, деактивиране, изтриване, генериране на нова временна парола.
  • Одит дневник — филтри по действие, потребител и период; експорт в CSV.
  • Посещения — брой посещения по дни и страници, разпознаване на ботове.
  • Настройки — заглавие на сайта, съобщение към студентите, контактен имейл, срокове за съхранение на дневниците, ръчно изчистване на стари записи.

Сигурност

  • Пароли с password_hash() (bcrypt), задължителна смяна при първо влизане.
  • CSRF защита на всички формуляри (скрито поле _token).
  • Защита от груба сила — записване и показване на неуспешните опити за вход.
  • Всички заявки към базата през подготвени PDO заявки.
  • Изходът е екраниран с e() (HTML escaping) навсякъде.
  • app/ и sql/ са блокирани от .htaccess; app/config.php не се качва в Git.
  • В дневника за посещения не се пази IP адрес — само SHA-256 отпечатък със сол.

Структура на проекта

izpiti-tf-ruse/
├── index.php               # Единствена входна точка (front controller) + таблица с маршрутите
├── router.php              # Само за локална разработка с php -S
├── .htaccess               # Пренасочване към index.php, кеш, защитни хедъри
├── assets/
│   ├── css/app.css         # Дизайн система (mobile-first)
│   ├── js/app.js           # Филтри, потвърждения при изтриване, зависими падащи менюта
│   └── img/favicon.svg
├── app/
│   ├── .htaccess           # Забранен достъп по HTTP
│   ├── bootstrap.php       # Начална настройка, сесия, автоматично зареждане
│   ├── config.sample.php   # Образец за конфигурацията
│   ├── config.php          # ВАШАТА конфигурация (не се качва в Git)
│   ├── lib/                # db, helpers, auth, audit, exams
│   ├── controllers/        # public, export, auth, admin_*
│   └── views/
│       ├── partials/       # Шаблони на публичната част и панела
│       ├── public/
│       └── admin/
└── sql/
    ├── 01_schema.sql       # Структура на базата
    └── 02_seed.sql         # Специалности, групи, дисциплини и примерни изпити

Структура на данните

  • programs — специалности: код (ААТТ, ТТТ, ЕЕ, ДОРАТ…), степен (бакалавър/магистър), курс 1–4.
  • study_groups — учебни групи към специалност и курс, с форма на обучение (редовно/задочно).
  • subjects — дисциплини с код, курс, семестър и водещ преподавател.
  • exams — изпити: дата, начален и краен час, зала, корпус, вид изпит, сесия, статус (чернова/публикуван), отменен, бележки.
  • exam_groups — връзка изпит ↔ групи (изпит без избрани групи важи за целия курс).
  • users — потребители с роля admin / editor.
  • audit_log — всяко действие: кой, кога, какво, от кой IP, с детайли в JSON.
  • visit_log — посещения на публичната част (анонимизирани).
  • settings — настройки на платформата (ключ/стойност).

Инсталация на хостинг

Подробните стъпки за SuperHosting.bg (cPanel + phpMyAdmin) са в DEPLOY.md.

Накратко:

  1. Създайте MySQL база и потребител в cPanel.
  2. Внесете sql/01_schema.sql, след това sql/02_seed.sql през phpMyAdmin.
  3. Качете съдържанието на хранилището в public_html.
  4. Копирайте app/config.sample.php като app/config.php и въведете данните за базата и нова ip_salt.
  5. Отворете сайта, влезте в /admin/vhod и веднага сменете паролите на демо акаунтите.

Демо акаунти от 02_seed.sql

Потребител Парола Роля
admin admin123 Администратор
izpiti izpiti123 Публикуващ

При първо влизане системата изисква смяна на паролата. Сменете ги, преди сайтът да стане публичен.

Локална разработка

php -S 127.0.0.1:8080 -t . router.php

Изисквания: PHP 8.1 или по-нов с разширения pdo_mysql, mbstring, json.


Технически решения

  • Без framework и без Composer — работи на всеки споделен хостинг с PHP 8.
  • Един входен файл index.php с изрична таблица на маршрутите; всички URL адреси са на латиница, но със български имена (/izpiti, /admin/potrebiteli).
  • Шаблоните са обикновени PHP файлове, рендирани чрез render($layout, $tpl, $data).
  • CSS без препроцесор, с променливи (--brand-900--brand-500) и mobile-first media queries.
  • Шрифт Inter с кирилски набор от Google Fonts.

Лиценз

MIT — свободно за използване и промяна от Русенски университет „Ангел Кънчев“ и всички други.

Източници на учебната информация

Списъкът на специалностите и магистърските програми е съставен по официалните страници на университета: специалности на Транспортен факултет, магистърски програми на ТФ, Транспортен факултет. Примерните изпити са демонстрационни и подлежат на замяна с реалния график.

About

График на изпитите на Транспортен факултет при Русенски университет „Ангел Кънчев“ — публичен график с търсене и филтри, панел с роли и пълен одит дневник (PHP 8 + MySQL)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages