Всего: 114 Коммитов в репозитории |
Отфильтровано: 114 Коммиты |
Страница: 10 / 12
27.11.2025
Security: Complete modernization users.php - CRITICAL SQL injection fixed
SICHERHEIT (KRITISCH!):
• ALLE SQL-Injection-Schwachstellen behoben
• All SQL queries → PDO Prepared Statements mit Parameter-Binding
• users_show(): Parametrisierte LIKE-Suche (:search, :group, :points)
• users_add(): PDO mit :id, :extra
• users_add_save(): Alle UPDATE/INSERT mit PDO (24 Parameter!)
• users_new(), users_null_save(): PDO mit :offset, :limit, :zero, :empty
• users_new_del(), users_del(): Neue separate Funktionen mit PDO
• $_POST → getVar() with security filters
MODERNIZATIONS:
• Copyright 2017 → 2026
• PHP 8 Type Hints for all functions (int, string, void)
• array() → [] (Short Array Syntax)
• tpl_eval()/tpl_warn() → setTemplateBasic()/setTemplateWarning()
• navi_gen() + func_get_args() → getAdminTabs() mit Parametern
• include() → require_once CONFIG_DIR
• save_conf() → setConfigFile()
• checkConfigFile() statt end_chmod()
CODE-STRUKTUR:
• Switch-Case bereinigt: Inline-Queries extrahiert
• users_null_save() als eigene Funktion (Line 329)
• users_new_del() als eigene Funktion (Line 441)
• users_del() als eigene Funktion (Line 450)
• Alle DELETE-Operationen jetzt mit PDO-Schutz
ZEILEN: 440 → 512 (+72)
• ALLE SQL-Injection-Schwachstellen behoben
• All SQL queries → PDO Prepared Statements mit Parameter-Binding
• users_show(): Parametrisierte LIKE-Suche (:search, :group, :points)
• users_add(): PDO mit :id, :extra
• users_add_save(): Alle UPDATE/INSERT mit PDO (24 Parameter!)
• users_new(), users_null_save(): PDO mit :offset, :limit, :zero, :empty
• users_new_del(), users_del(): Neue separate Funktionen mit PDO
• $_POST → getVar() with security filters
MODERNIZATIONS:
• Copyright 2017 → 2026
• PHP 8 Type Hints for all functions (int, string, void)
• array() → [] (Short Array Syntax)
• tpl_eval()/tpl_warn() → setTemplateBasic()/setTemplateWarning()
• navi_gen() + func_get_args() → getAdminTabs() mit Parametern
• include() → require_once CONFIG_DIR
• save_conf() → setConfigFile()
• checkConfigFile() statt end_chmod()
CODE-STRUKTUR:
• Switch-Case bereinigt: Inline-Queries extrahiert
• users_null_save() als eigene Funktion (Line 329)
• users_new_del() als eigene Funktion (Line 441)
• users_del() als eigene Funktion (Line 450)
• Alle DELETE-Operationen jetzt mit PDO-Schutz
ZEILEN: 440 → 512 (+72)
Refactor: Complete modernization groups.php
MODERNIZATIONS:
• Copyright 2018 → 2026
• PHP 8 Type Hints for all functions (int, string, void)
• array() → [] (Short Array Syntax)
• $_POST/$_GET/$_REQUEST → getVar() with security filters
• tpl_eval()/tpl_warn() → setTemplateBasic()/setTemplateWarning()
• navi_gen() → getAdminTabs()
• func_get_args() → named parameters
• Manual file operations → setConfigFile()
SQL SECURITY:
• All SQL queries → PDO Prepared Statements
• Parameter binding with :param placeholders
• SQL injection protection
FUNCTIONAL CHANGES:
• groups_del() extracted as separate function
• Error handling in groups_save() corrected
• Code formatting standardized
• Copyright 2018 → 2026
• PHP 8 Type Hints for all functions (int, string, void)
• array() → [] (Short Array Syntax)
• $_POST/$_GET/$_REQUEST → getVar() with security filters
• tpl_eval()/tpl_warn() → setTemplateBasic()/setTemplateWarning()
• navi_gen() → getAdminTabs()
• func_get_args() → named parameters
• Manual file operations → setConfigFile()
SQL SECURITY:
• All SQL queries → PDO Prepared Statements
• Parameter binding with :param placeholders
• SQL injection protection
FUNCTIONAL CHANGES:
• groups_del() extracted as separate function
• Error handling in groups_save() corrected
• Code formatting standardized
Refactor: Code-Bereinigung und Modernisierung
Core-Änderungen (core/core.php):
• fields_in() und fields_out(): include → require_once
• Hardcoded Pfad → CONFIG_DIR Konstante
• config_fields.php → fields.php (korrekte Datei)
Changelog-Modul (admin/modules/changelog.php):
• Removed unnecessary default case in switch statement
• fields_in() und fields_out(): include → require_once
• Hardcoded Pfad → CONFIG_DIR Konstante
• config_fields.php → fields.php (korrekte Datei)
Changelog-Modul (admin/modules/changelog.php):
• Removed unnecessary default case in switch statement
Optimize: getVar() mit Bracket-Notation und Code-Optimierung
Core-Änderungen (core/security.php):
• Bracket-Notation implementiert: field[0] für Index, field[] für ganzes Array
• Parameters reduced from 5 to 4 (index parameter removed)
• Code duplication removed: $filters Array only defined once
• Variablen auf snake_case umgestellt: $array_index, $is_array_all
• Array-Element-Filterung added für bessere Sicherheit
Module aktualisiert:
• admin/modules/fields.php: Verwendet Bracket-Notation field1X[i]
• admin/modules/comments.php: Verwendet Bracket-Notation id[] mit num-Filter
Advantages:
• Sauberere API without zusätzlichen Index-Parameter
• ~26 Zeilen weniger Code durch Entfernung von Duplikaten
• Konsistente Namenskonvention (snake_case)
• Sicherer durch Element-Filterung bei Arrays
• Bracket-Notation implementiert: field[0] für Index, field[] für ganzes Array
• Parameters reduced from 5 to 4 (index parameter removed)
• Code duplication removed: $filters Array only defined once
• Variablen auf snake_case umgestellt: $array_index, $is_array_all
• Array-Element-Filterung added für bessere Sicherheit
Module aktualisiert:
• admin/modules/fields.php: Verwendet Bracket-Notation field1X[i]
• admin/modules/comments.php: Verwendet Bracket-Notation id[] mit num-Filter
Advantages:
• Sauberere API without zusätzlichen Index-Parameter
• ~26 Zeilen weniger Code durch Entfernung von Duplikaten
• Konsistente Namenskonvention (snake_case)
• Sicherer durch Element-Filterung bei Arrays
Extend: getVar() now supports type 'array' for entire arrays
• core/security.php: Neuer Typ 'array' für getVar()
- Gibt ganzes Array zurück: $_POST['id'] = [1,2,3]
- Verwendung: getVar('post', 'id', 'array')
- Ersetzt filter_input(..., FILTER_REQUIRE_ARRAY)
- PHPDoc aktualisiert mit neuem Typ
• admin/modules/comments.php: Modernisiert mit neuem Array-Typ
- Vorher: filter_input(INPUT_POST, 'id', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY)
- Nachher: getVar('post', 'id', 'array')
- Konsistente API, sauberer Code
getVar() unterstützt jetzt 3 Array-Modi:
1. Einzelwerte: getVar('post', 'name', 'text')
2. Array-Index: getVar('post', 'field10', '', '', 0) → $_POST['field10'][0]
3. Ganzes Array: getVar('post', 'id', 'array') → $_POST['id'] als Array
- Gibt ganzes Array zurück: $_POST['id'] = [1,2,3]
- Verwendung: getVar('post', 'id', 'array')
- Ersetzt filter_input(..., FILTER_REQUIRE_ARRAY)
- PHPDoc aktualisiert mit neuem Typ
• admin/modules/comments.php: Modernisiert mit neuem Array-Typ
- Vorher: filter_input(INPUT_POST, 'id', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY)
- Nachher: getVar('post', 'id', 'array')
- Konsistente API, sauberer Code
getVar() unterstützt jetzt 3 Array-Modi:
1. Einzelwerte: getVar('post', 'name', 'text')
2. Array-Index: getVar('post', 'field10', '', '', 0) → $_POST['field10'][0]
3. Ganzes Array: getVar('post', 'id', 'array') → $_POST['id'] als Array
Optimize: getVar() mit Array-Index-Support + fields.php modernisiert
• core/security.php: getVar() um 5. Parameter $index erweitert
- Unterstützt jetzt mehrdimensionale Arrays: $_POST['field10'][0]
- filter_input() funktioniert nicht mit mehrdimensionalen Arrays
- Bei $index !== null: Direkter Zugriff auf $_POST/$_GET
• admin/modules/fields.php: Komplett modernisiert
- Nutzt neue getVar() mit Index-Parameter
- Void return type, moderne Array-Syntax
- Removed all commented code blocks
- Saubere, wartbare Implementierung
• config/fields.php: Ersetzt config_config_fields.php
- Vereinfachter Pfad without "config_" Präfix
- Konsistent mit anderen Config-Dateien
- Unterstützt jetzt mehrdimensionale Arrays: $_POST['field10'][0]
- filter_input() funktioniert nicht mit mehrdimensionalen Arrays
- Bei $index !== null: Direkter Zugriff auf $_POST/$_GET
• admin/modules/fields.php: Komplett modernisiert
- Nutzt neue getVar() mit Index-Parameter
- Void return type, moderne Array-Syntax
- Removed all commented code blocks
- Saubere, wartbare Implementierung
• config/fields.php: Ersetzt config_config_fields.php
- Vereinfachter Pfad without "config_" Präfix
- Konsistent mit anderen Config-Dateien
Refactor: Changelog Module UI Improvements
Export-Funktionalität als Tabs integriert:
• Export-Optionen jetzt als echte Tabs im Navigation-System
• Filter-Feld-Breiten optimiert für bessere UX
• Switch cases für changelog_export_txt und changelog_export_md added
Änderungen:
• Filter-Felder: Breiten angepasst (200px/180px/150px)
• Export-Tabs: In $ops und $lang Arrays integriert
• Tab-Labels: "Export TXT" und "Export Markdown"
• Export nur sichtbar wenn export_enabled aktiviert ist
• Cleaner Code: Export-Logik in Tab-System statt separate Sektion
• Export-Optionen jetzt als echte Tabs im Navigation-System
• Filter-Feld-Breiten optimiert für bessere UX
• Switch cases für changelog_export_txt und changelog_export_md added
Änderungen:
• Filter-Felder: Breiten angepasst (200px/180px/150px)
• Export-Tabs: In $ops und $lang Arrays integriert
• Tab-Labels: "Export TXT" und "Export Markdown"
• Export nur sichtbar wenn export_enabled aktiviert ist
• Cleaner Code: Export-Logik in Tab-System statt separate Sektion
Feature: Complete Changelog Module Overhaul
Massive enhancement with ALL requested features:
New Features:
• Filter & Search: Author, file, search term, date range
• Pagination: 10 commits per page (configurable)
• Export: TXT and Markdown formats with download
• Date Grouping: Today, Yesterday, This Week labels
• Preferences Tab: Full configuration UI
• Configuration: 6 customizable settings
Technical Improvements:
• Added config/changelog.php configuration file
• 454 lines (from ~190) with clean structure
• Default case in switch statement
• 4-space formatting (consistent with fields.php)
• Proper escapeshellarg() for security
• Query parameter preservation in pagination
• HTTP export headers for file download
Functions:
• changelog() - Main display with filters
• changelog_conf() - Preferences tab
• changelog_save_conf() - Save configuration
• changelog_export() - Export functionality
• group_commits_by_date() - Date grouping
• render_commit() - Commit rendering with config awareness
All features work together seamlessly.
New Features:
• Filter & Search: Author, file, search term, date range
• Pagination: 10 commits per page (configurable)
• Export: TXT and Markdown formats with download
• Date Grouping: Today, Yesterday, This Week labels
• Preferences Tab: Full configuration UI
• Configuration: 6 customizable settings
Technical Improvements:
• Added config/changelog.php configuration file
• 454 lines (from ~190) with clean structure
• Default case in switch statement
• 4-space formatting (consistent with fields.php)
• Proper escapeshellarg() for security
• Query parameter preservation in pagination
• HTTP export headers for file download
Functions:
• changelog() - Main display with filters
• changelog_conf() - Preferences tab
• changelog_save_conf() - Save configuration
• changelog_export() - Export functionality
• group_commits_by_date() - Date grouping
• render_commit() - Commit rendering with config awareness
All features work together seamlessly.
Refactor: fields.php Config-Pfad simplified + Formatierung
Änderungen:
• Config-Datei: config_fields.php → fields.php (kürzer, konsistenter)
• require_once: CONFIG_DIR.'/fields.php'
• checkConfigFile('fields.php')
• setConfigFile bleibt: 'config_fields.php' (echter Dateiname)
• Code-Formatierung: Tabs → 4 Spaces (einheitlich)
Konsistente Namensgebung für Config-Dateien.
• Config-Datei: config_fields.php → fields.php (kürzer, konsistenter)
• require_once: CONFIG_DIR.'/fields.php'
• checkConfigFile('fields.php')
• setConfigFile bleibt: 'config_fields.php' (echter Dateiname)
• Code-Formatierung: Tabs → 4 Spaces (einheitlich)
Konsistente Namensgebung für Config-Dateien.
Improve: getAdminTabs() mit Multi-Tab-Support erweitert
Änderungen in fields.php:
• getAdminTabs() nutzt jetzt $legacy und $extra Parameter
• Bessere Lösung als zurück zu navi_gen()
• Moderne Funktion bleibt, aber mit erweiterten Capabilities
Multi-Tab-System (7 Tabs) funktioniert jetzt mit getAdminTabs():
• Account, Content, Forum, Help, News, Order, Info
Tab-Navigation und Content-Anzeige funktionieren korrekt.
• getAdminTabs() nutzt jetzt $legacy und $extra Parameter
• Bessere Lösung als zurück zu navi_gen()
• Moderne Funktion bleibt, aber mit erweiterten Capabilities
Multi-Tab-System (7 Tabs) funktioniert jetzt mit getAdminTabs():
• Account, Content, Forum, Help, News, Order, Info
Tab-Navigation und Content-Anzeige funktionieren korrekt.





