Documentație Tehnică - Management ONG

1. Prezentarea Aplicației

Aplicația "Pentru Comunitate" este o platformă web destinată gestionării activităților unui ONG, facilitând interacțiunea dintre administratori și voluntari/donatori.

Obiective principale:
  • Digitalizarea procesului de înregistrare și gestionare a voluntarilor.
  • Gestiunea transparentă a proiectelor sociale și a fondurilor colectate.
  • Generarea automată de rapoarte de impact (CSV) și monitorizarea activității web prin analytics local.
  • Integrarea cu servicii externe pentru date financiare în timp real (Curs BNR).

2. Arhitectura Sistemului

Proiectul utilizează o arhitectură Client-Server bazată pe PHP(cod prin funcții si fisiere incluse), MySQL(tabele pentru utilizatori, proiecte, donații) și CSS(pentru aspect).

Managementul Sesiunilor și Accesului:

  • Sesiuni: Utilizarea session_start() pentru menținerea stării utilizatorului pe parcursul navigării.
  • Controlul Accesului: Verificarea rolului utilizatorului (admin vs voluntar) pentru a restricționa accesul la funcțiile critice precum adăugarea, editarea sau ștergerea proiectelor.
  • Securizarea Ieșirii: Utilizarea header("Location: ...") și exit() pentru redirecționări securizate după operațiuni de tip POST sau Logout.

Roluri

  • Administrator: Acces total la gestiunea proiectelor (CRUD), vizualizarea donațiilor și exportul rapoartelor financiare.
  • Voluntar: Poate vizualiza proiectele active, istoricul impactului și datele personale.
  • Vizitator: Accesează povestea ONG-ului, statistici publice și se poate înregistra în platformă.

Entități Bază de Date

Tabel Rol
utilizatori Stocarea datelor de profil, parolelor hash-uite și a rolurilor (admin/voluntar).
proiecte Inventarul inițiativelor sociale, bugete și perioade de desfășurare.
donatii Legătura dintre utilizatori și proiecte, înregistrând sumele și data contribuțiilor.

3. Descrierea Bazei de Date

Sistemul utilizează o bază de date relațională compusă din trei tabele interconectate:

  • Tabelul utilizatori: Stochează id, nume_complet, email, parola (hash-uită) și rol.
  • Tabelul proiecte: Reține detaliile inițiativelor: titlu, descriere, data_inceput și buget.
  • Tabelul donatii: Înregistrează contribuțiile financiare (suma, data_donatie) și realizează legătura logică între utilizatori și proiecte prin chei externe.

Pentru rapoartele complexe, aplicația utilizează interogări de tip JOIN pentru a corela datele din cele trei tabele.


4. Soluții de Implementare și Securitate

Arhitectura este de tip Client-Server, utilizând un model modular unde logica de business este separată de prezentare prin includerea fișierelor de header/footer și funcții utilitare.

Tehnologii Utilizate:

  • Backend: PHP (Procedural cu funcții), gestionarea sesiunilor prin session_start().
  • Bază de date: MySQL (Relațională), utilizând interogări JOIN pentru corelarea datelor.
  • Frontend: HTML5 (semantic), CSS3 (responsiv/media queries).
  • Integrări: Parsare XML curs BNR, comunicare SMTP prin PHPMailer.
  • Analytics: Sistem local de contorizare în fișiere text (.txt).
  • Integrare Biblioteci Externe: Utilizarea clasei FPDF instanțiate prin new PDF() pentru a construi ierarhia documentului (Header, Footer, Body) și pentru a calcula automat numărul de pagini prin AliasNbPages().

Securitate Implementată:

  • SQL Injection: Utilizarea exclusivă a Prepared Statements.
  • XSS & Data Validation: Output Escaping cu htmlspecialchars() și filtrare emailuri.
  • Auth & Securitate: Parole criptate cu password_hash() și redirecționări securizate după acțiuni.
  • Protecție Formulare: Mecanism CAPTCHA matematic dinamic.

Module Speciale:

  • Email SMTP (PHPMailer): Implementarea comunicării prin protocolul SMTP pe portul 465 (SSL), utilizând clasa PHPMailer și configurarea externă din mail_config.php pentru o rată de livrare ridicată.
  • Integrare API Extern: Preluarea și parsarea dinamică a cursului valutar BNR dintr-un flux XML extern utilizând simplexml_load_file().
  • Export Date (CSV): Generarea automată de rapoarte descărcabile prin scrierea directă în fluxul php://output folosind funcția fputcsv().
  • Web Analytics Local: Monitorizarea traficului prin funcții PHP personalizate (file_put_contents) care gestionează contoare în fișiere text locale.
  • Raportare PDF Avansată: Generarea documentelor portabile securizate folosind biblioteca FPDF, procesând datele din baza de date prin interogări de tip JOIN și livrând fișierul direct către browser prin metoda Output().

Interfață și Multimedia:

  • Compatibilitatea: Aplicația utilizează un design responsiv bazat pe unități de măsură relative și meta-tag-ul viewport, asigurând funcționarea corectă pe diverse browsere (Chrome, Firefox, Edge) și dispozitive mobile.
  • Elemente Multimedia: Integrarea conținutului video pentru prezentarea vizuală a impactului unui ONG.
  • Protecție Formulare: Implementarea unui mecanism CAPTCHA matematic dinamic (generat cu rand()) pentru validarea interacțiunilor umane în paginile publice.
  • Optimizări SEO: Utilizarea meta-tag-urilor (description, keywords) și a atributelor alt pentru imagini în header.php.
  • Date Structurate: Utilizarea formatului JSON-LD pentru a defini entitatea ONG și scopul paginilor în fața motoarelor de căutare.
  • Ierarhie Semantică: Organizarea conținutului folosind tag-uri HTML5 (main, article) și titluri dinamice pentru o indexare corectă.

4. Structura Proiectului (Sistem de fișiere)

            /public_html
            ├── mail/                (Biblioteca PHPMailer și configurări SMTP)
            ├──libs/
            |  ├── fpdf.php (Nucleul bibliotecii de generare PDF)
            |  └── font/ (Conține seturile de caractere necesare pentru afișarea textului)
            ├── adaugare_proiect.php (Formular adăugare proiecte noi)
            ├── contact.php          (Pagina contact cu validare/CAPTCHA)
            ├── dashboard.php        (Panou control - lista proiecte CRUD)
            ├── db.php               (Configurare conexiune MySQL)
            ├── documentatie.php     (Documentația tehnică a proiectului)
            ├── doneaza.php          (Modul procesare donații)
            ├── editare_proiect.php  (Formular modificare proiecte existente)
            ├── export_proiecte.php  (Export CSV Proiecte - Admin)
            ├── footer.php           (Componentă final pagină)
            ├── functii.php          (Logica procesare - contoare vizite)
            ├── header.php           (Meniu navigare, SEO, Sesiuni)
            ├── index.php            (Pagina principală cu video)
            ├── login.php            (Sistem autentificare)
            ├── logout.php           (Închidere sesiune utilizator)
            ├── raport_donatii.php   (Export CSV Donații - Admin)
            ├── raport_pdf.php       (Export PDF Donații - Admin)
            ├── register.php         (Înregistrare voluntari noi)
            ├── statistici.php       (Vizualizare impact, BNR, Analytics)
            ├── stergere_proiect.php (Procesare eliminare proiecte)
            ├── style.css            (Design responsiv/CSS Variables)
            ├── contor_vizite.txt    (Bază de date text pentru analytics pagini)
            ├── vizite.txt           (Bază de date text pentru analytics general)
            ├── imagine_statistici.png (Element multimedia statistici)
            └── logo_ong.png         (Identitate vizuală)