Skip to content

Latest commit

Β 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Hotel Management System

Kompletan web sustav za upravljanje hotelima s naprednim značajkama i sigurnosnim zaőtitama

πŸ“‹ Pregled Projekta

Hotel Management System je potpuno funkcionalna web aplikacija razvijena kao zavrΕ‘ni projektni rad iz kolegija Programiranje za Web. Sustav implementira sve 36 obveznih zahtjeva, uključujuΔ‡i MVC arhitekturu, CRUD operacije, sigurnosne zaΕ‘tite (CSRF, XSS, SQL Injection), SEO optimizaciju, korisničko upravljanje i audit log sistem.

🎯 Glavni Ciljevi

  • βœ… CRUD operacije - Potpuno upravljanje hotelskim podacima
  • βœ… MVC arhitektura - Jasna separacija odgovornosti
  • βœ… Sigurnosne zaΕ‘tite - CSRF, XSS, SQL Injection prevencija
  • βœ… Korisničko upravljanje - Autentikacija, autorizacija, uloge (Admin/User/Guest)
  • βœ… SEO optimizacija - SEO-friendly URL struktura
  • βœ… Responsive dizajn - Prilagodba svim ureΔ‘ajima
  • βœ… Audit log - PraΔ‡enje svih promjena u sustavu
  • βœ… AJAX komunikacija - Dinamičko aΕΎuriranje bez page reload

πŸš€ Značajke

Osnovne Funkcionalnosti

  • Hotel Management: CRUD operacije (Create, Read, Update, Delete)
  • User Authentication: Login, registracija, Remember Me funkcionalnost
  • Role-Based Access Control: 3 uloge (Admin, User, Guest) s različitim pravima
  • Search & Filter: Napredna pretraga hotela po gradu i ΕΎupaniji
  • Statistics Dashboard: Grafički prikazi statistika s Chart.js
  • Contact Form: Kontakt forma s email notifikacijama

Administratorske Funkcionalnosti

  • User Management: Upravljanje korisnicima, uloge, blokiranje naloga
  • System Settings: Dinamička konfiguracija sustava
  • Audit Log: Pregled svih promjena u bazi podataka
  • Database Backup/Restore: Sigurnosne kopije baze podataka
  • Security Dashboard: Pregled sigurnosnih dogaΔ‘aja

Sigurnosne ZaΕ‘tite

  • CSRF Protection: Token-based zaΕ‘tita svih formi (18 endpointa zaΕ‘tiΔ‡eno)
  • XSS Prevention: htmlspecialchars() za sve outpute
  • SQL Injection: Prepared statements za sve upite
  • Password Security: bcrypt hashing
  • Account Locking: Automatsko zaključavanje nakon neuspjelih prijava
  • Session Security: Session regeneration, timeout kontrola
  • HTTPS Enforcement: Automatski redirect na HTTPS

Dodatne Značajke

  • RSS Feed: Automatski generirani feed za najnovije hotele
  • SEO URLs: /hotel/123/naziv-hotela format
  • Responsive Design: Mobile-first pristup s CSS Grid & Flexbox
  • AJAX Operations: Dinamičko dodavanje/ureΔ‘ivanje bez reload
  • Cookie Management: Cookie consent banner s GDPR compliance
  • Guest Limits: Ograničen pregled za neregistrirane korisnike

πŸ› οΈ Tehnologije

Backend

  • PHP 8.x
  • MySQL 8.0 (MySQLi)
  • Apache 2.4 (XAMPP)
  • PHPMailer

Frontend

  • HTML5
  • CSS3 (Grid, Flexbox, Custom Properties)
  • JavaScript (ES6+, Fetch API)
  • Bootstrap 5.3
  • Bootstrap Icons 1.11
  • Chart.js 4.x

Arhitektura

  • MVC Pattern - Model-View-Controller separacija
  • RESTful API - JSON komunikacija za AJAX
  • Prepared Statements - SQL injection prevencija
  • Templating System - Reusable header/footer komponente

πŸ“ Struktura Projekta

hotel_managment/
β”œβ”€β”€ api/                    # Backend API endpoints (Controller)
β”‚   β”œβ”€β”€ add_hotel.php
β”‚   β”œβ”€β”€ update_hotel.php
β”‚   β”œβ”€β”€ delete_hotel.php
β”‚   β”œβ”€β”€ login.php
β”‚   β”œβ”€β”€ register_user.php
β”‚   β”œβ”€β”€ user_action.php
β”‚   └── ...
β”œβ”€β”€ assets/                 # Static resources
β”‚   β”œβ”€β”€ css/
β”‚   β”‚   β”œβ”€β”€ grid-flexbox.css
β”‚   β”‚   β”œβ”€β”€ responsive.css
β”‚   β”‚   └── ...
β”‚   β”œβ”€β”€ js/
β”‚   └── images/
β”œβ”€β”€ lib/                    # Business logic (Model)
β”‚   β”œβ”€β”€ db_connection.php
β”‚   β”œβ”€β”€ SessionManager.php
β”‚   β”œβ”€β”€ Hotel.php
β”‚   β”œβ”€β”€ User.php
β”‚   β”œβ”€β”€ AuditLog.php
β”‚   β”œβ”€β”€ CSRFToken.php
β”‚   β”œβ”€β”€ SEOHelper.php
β”‚   └── Router.php
β”œβ”€β”€ templates/              # Reusable UI (View)
β”‚   β”œβ”€β”€ header.php
β”‚   β”œβ”€β”€ footer.php
β”‚   └── hotel_card.php
β”œβ”€β”€ backups/                # Database backups
β”œβ”€β”€ index.php               # Main hotel listing
β”œβ”€β”€ view.php                # Hotel details (SEO URL)
β”œβ”€β”€ dashboard.php           # User dashboard
β”œβ”€β”€ login.php
β”œβ”€β”€ register.php
β”œβ”€β”€ contact.php
β”œβ”€β”€ admin_panel.php
β”œβ”€β”€ user_management.php
β”œβ”€β”€ system_settings.php
β”œβ”€β”€ audit_log.php
β”œβ”€β”€ statistics.php
β”œβ”€β”€ database_backup.php
β”œβ”€β”€ autor.html              # Author information
β”œβ”€β”€ dokumentacija.html      # Technical documentation
β”œβ”€β”€ security_report.html    # Security audit report
β”œβ”€β”€ .htaccess              # Apache rewrite rules
└── README.md              # This file

πŸ”§ Instalacija

Preduvjeti

  • XAMPP 8.x (PHP 8.x + MySQL 8.0 + Apache 2.4)
  • Web browser (Chrome, Firefox, Edge, Safari)

Koraci Instalacije

  1. Klonirajte projekt u htdocs direktorij:

    cd C:\xampp\htdocs
    git clone [repository-url] hotel_managment
  2. Kreirajte bazu podataka:

    mysql -u root -p
    CREATE DATABASE hotel_management CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  3. Importajte SQL shemu:

    mysql -u root hotel_management < database_schema.sql
  4. Konfigurirajte database connection: Uredite lib/db_connection.php:

    $host = 'localhost';
    $dbname = 'hotel_management';
    $username = 'root';
    $password = ''; // Postavite vaΕ‘u lozinku
  5. Pokrenite Apache i MySQL u XAMPP-u

  6. Pristupite aplikaciji:

    http://localhost/hotel_managment
    
  7. Default admin pristup:

    • Username: admin
    • Password: admin123

    ⚠️ VAŽNO: Promijenite admin lozinku nakon prve prijave!

πŸ“– Dokumentacija

Potpuna tehnička dokumentacija dostupna je na:

API Dokumentacija

Hotels API

GET /api/get_hotels.php

  • VraΔ‡a sve hotele
  • Response: JSON array hotel objekata

POST /api/add_hotel.php

  • Dodaje novi hotel
  • Body: JSON s hotel podacima + CSRF token
  • Response: {success: true, message: "..."}

POST /api/update_hotel.php

  • AΕΎurira postojeΔ‡i hotel
  • Body: JSON s hotel podacima + CSRF token
  • Response: {success: true, message: "..."}

POST /api/delete_hotel.php

  • BriΕ‘e hotel
  • Body: {id: 123, csrf_token: "..."}
  • Response: {success: true, message: "..."}

Authentication API

POST /api/login.php

  • Prijava korisnika
  • Body: {username: "...", password: "...", remember: true/false, csrf_token: "..."}
  • Response: {success: true, redirect: "dashboard.php"}

POST /api/register_user.php

  • Registracija novog korisnika
  • Body: JSON s user podacima + CSRF token
  • Response: {success: true, message: "..."}

πŸ”’ Sigurnost

Implementirane ZaΕ‘tite

1. CSRF Protection

  • 32-byte random tokeni
  • Session storage s 1-sat expiryjem
  • Timing-safe validacija
  • 9 formi zaΕ‘tiΔ‡eno (login, register, contact, hotel CRUD, system settings, user actions, backup)
  • 9 API endpointa validira tokene

Primjer implementacije:

// U formi:
<?php echo CSRFToken::getField(); ?>

// U API-ju:
CSRFToken::verifyPost(); // Baca exception ako nije validan

2. XSS Prevention

  • htmlspecialchars($var, ENT_QUOTES, 'UTF-8') za sve outpute
  • SEOHelper::escape() wrapper funkcija
  • 5+ stranica zaΕ‘tiΔ‡eno: index.php, view.php, dashboard.php, user_management.php, audit_log.php

Primjer:

echo htmlspecialchars($hotel['naziv'], ENT_QUOTES, 'UTF-8');
// ili
echo SEOHelper::escape($hotel['naziv']);

3. SQL Injection Prevention

  • 100% prepared statements - Nema direktnog SQL-a
  • Parameter binding s tipiziranjem
  • MySQLi s bind_param()

Primjer:

$stmt = $conn->prepare("SELECT * FROM hotels WHERE id = ?");
$stmt->bind_param("i", $hotelId);
$stmt->execute();

4. Authentication Security

  • Password hashing s password_hash() (bcrypt)
  • Account locking nakon 3 neuspjela pokuΕ‘aja
  • Session regeneration pri login/logout
  • Remember Me tokeni (64-char, 30 dana)

5. Dodatne ZaΕ‘tite

  • HTTPS enforcement (https_checker.php)
  • Session timeout kontrola
  • IP tracking u audit logu
  • File upload validacija (ako se implementira)

🎨 UI/UX Značajke

Responsive Design

  • Mobile-first pristup
  • CSS Grid & Flexbox layout
  • Bootstrap 5 breakpoints
  • Custom @media queries
  • Responsive tables s data-label patternima

Accessibility

  • Semantic HTML5
  • ARIA labels
  • Keyboard navigation
  • Color contrast WCAG AA compliant

Design Sistem

  • Colors: Purple gradient (#667eea β†’ #764ba2)
  • Icons: Bootstrap Icons 1.11
  • Typography: System font stack
  • Components: Reusable card, button, form styles

πŸ“Š Statistike Projekta

  • Linija koda: ~8,000+
  • PHP datoteka: 25+
  • CSS datoteka: 5
  • JavaScript datoteka: 3
  • Database tablice: 7
  • API endpoints: 15+
  • Zahtjeva implementirano: 36/36 (100%)

πŸ§ͺ Testiranje

Manualno Testiranje

  1. CSRF Test:

    • Otvorite DevTools β†’ Network
    • Submit bilo koju formu
    • Provjerite da POST sadrΕΎi csrf_token
  2. XSS Test:

    • PokuΕ‘ajte dodati hotel s nazivom: <script>alert('XSS')</script>
    • Script se ne smije izvrΕ‘iti, veΔ‡ prikazati kao tekst
  3. SQL Injection Test:

    • Login s username: ' OR '1'='1
    • Login NE smije uspjeti
  4. Responsive Test:

    • Resize browser na različite veličine
    • Testiranje na mobilnim ureΔ‘ajima
    • Provjera breakpoints-a

Alati za Testiranje

  • Chrome DevTools
  • Firefox Developer Tools
  • Postman (API testing)
  • OWASP ZAP (security scanning)

πŸ› Poznati Problemi i Ograničenja

  1. Email: Kontakt forma zahtijeva SMTP konfiguraciju za production
  2. File Upload: Trenutno nema upload funkcionalnosti za hotel slike
  3. Pagination: Search ne podrΕΎava pagination (prikazuje sve rezultate)
  4. i18n: Aplikacija je trenutno samo na hrvatskom jeziku
  5. Browser Support: Optimizirano za moderne browsere (Chrome 90+, Firefox 88+, Edge 90+, Safari 14+)

🚧 BuduΔ‡i Razvoj

Planirane Značajke

  • Hotel photo gallery upload
  • Hotel rating & review system
  • Booking/reservation sistem
  • Email notifications za admin
  • 2FA (Two-Factor Authentication)
  • Export to PDF/Excel
  • Multi-language support (i18n)
  • Mobile app (Progressive Web App)

Performance Optimizacije

  • Redis cache za sessions
  • Query caching
  • Image optimization & lazy loading
  • CDN integration
  • Minification & compression

πŸ“ž Kontakt

Ime i Prezime Autora

  • Email: student@example.com
  • Projekt: Hotel Management System
  • Kolegij: Programiranje za Web
  • Godina: 2025/2026

πŸ“„ Licenca

Ovaj projekt je razvijen kao zavrΕ‘ni projektni rad u edukacijske svrhe.


IzraΔ‘eno s ❀️ za kolegij Programiranje za Web
2026 Β© Hotel Management System

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages