Freiwillige Überprüfung meines Programmierprojektes?

Diskutiere Freiwillige Überprüfung meines Programmierprojektes? im PHP Forum im Bereich Programmierung; Hallo liebe Community, Ich habe in der letzten Zeit eine Programmierplattform für Schulen entwickelt. Das Projekt beinhaltet Funktionen wie...
N

Nycrofox

New member
Beiträge
2
Punkte Reaktionen
0
Hallo liebe Community,

Ich habe in der letzten Zeit eine Programmierplattform für Schulen entwickelt. Das Projekt beinhaltet Funktionen wie Benutzer- & Klassenverwaltung, Dateiverwaltung und Aufgabenverwaltung. So kann der Lehrer Dateien sowohl für einzelne Schüler als auch ganze Klassen freigeben, dasselbe mit Aufgaben (sowohl für ganze Klassen als auch einzelne Schüler). Auch kann der Lehrer einen "Fokus Modus" aktivieren, bei dem die Schüler einer ganzen Klasse / einzelne Schüler auf eine Art "Wartelobby" weitergeleitet werden, bis der Lehrer sie wieder freigibt. Die Schüler können dann online ihren Code in die Dateien schreiben und auch direkt im Browser ausführen. Das ganze funktioniert in den Programmiersprachen Python, C, C++, C#, Java & Javascript. So erhalten sie die Ausgabe direkt im Browser (aber natürlich keine GUI's). Die Plattform stößt bei meinen Lehrern auf große Begeisterung und ich habe sie gerade zum Testen freigegeben.

Dennoch stelle ich hier Mal eine Art "Anfrage", ob es denn liebenswerte Leute gibt, die Zeit und Lust haben, sich meinen Code Mal anzusehen und direkt anhand des Codes Verbesserungen vorzuschlagen und per GitHub Pull Request zu stellen. Das alles ist natürlich auf FREIWILLIGER Basis, dennoch hoffe ich natürlich das ich bei einigen Interessierten Neugier geweckt habe sich das Mal anzusehen.

Hier der Link zum GitHub Repo:

https://github.com/programmingnow-project/programmingNOW

Hier der Link zu einer Demo Seite (Zugangsdaten stehen auf GitHub):

Frontend (Benutzerportal - für die Schüler):

https://beta.programmingnow.de/

Backend (Administrationsbereich - für die Lehrer):

https://beta.programmingnow.de/now-admin/

Falls euch Sachen aufgefallen sind oder ihr direkt Verbesserungen habt (was natürlich das Beste wäre) könnt ihr gern GitHub Pull Requests und Issues erstellen.

Ich bedanke mich ganz herzlich bei allen die mich hierbei unterstützen möchten und wünsche allen einen schönen Abend!

Vielen Grüße,

Nycrofox
 
T

tk1234

Member
Beiträge
6
Punkte Reaktionen
0
Da jetzt das Sicherheitsscheunentor zu ist (es war möglich beliebigen Code auf dem Server auszuführen) hier noch einige weitere Dinge. Ist einiges geworden und leider etwas durcheinander, das jetzt aber alles noch zu sortieren habe ich keine Lust.

  • für öffentliche Demozugänge sind die Passwörter unnötig kompliziert
  • die Verzeichnisstruktur ist ein einziges Chaos, ich bin froh dass ich da nichts finden muss … Die scss-Dateien oder auch das libs-Verzeichnis z.B. gibt es anscheinend doppelt, einmal in now-admin und einmal in now-frontend - warum?
  • in allen PHP-Dateien sollte kein ?> am Ende stehen, das sorgt potentiell nur für Probleme. Eine ordentliche Formatierung der PHP-Dateien (z.B. je Ebene 4 Leerzeichen einrücken, if-Blöcke nicht in eine Zeile quetschen) erhöht die Lesbarkeit auch deutlich …
  • warum ist die betaV1.3.0.zip mit in der Versionsverwaltung?
  • die mysql.php macht viel zu viel - die Klasse sollte maximal die Verbindung zur Datenbank aufbauen und vielleicht noch die eine oder andere Helfermethode bieten, aber mehr nicht. Alle anderen Methoden gehören in eigene Klassen. Übrigens das PDO::FETCH_ASSOC bei jeder Abfrage kannst du dir sparen wenn du das beim Öffnen der Verbindung als Standard definierst.
  • verwende niemals »SELECT *«, gib immer an welche Spalten du brauchst
  • beim Anlegen von z.B. neuen Gruppen (da ist es mir aufgefallen) solltest du Transaktionen verwenden damit entweder alle Querys durch gehen oder keiner - sonst kann es passieren dass die Gruppe angelegt wird, das dazugehörige Verzeichnis aber nicht mehr
  • jQuery ist heutzutage nicht mehr notwendig, die Möglichkeiten von VanilaJS sind so weit dass jQuery problemlos weg gelassen werden kann
  • Bootstrap fand ich noch nie gut/sinnvoll - das ist auch nicht mehr wirklich nötig, grid- und flex-Layouts existieren, ein Framework braucht es dafür nicht mehr. Bootstrap ist wohl auch an der richtig üblen div-Suppe der Seite schuld …
  • die Seite ist viel zu groß: 1,6MB und 23 Dateien sind für den Inhalt zu viel, da solltest du dringend ausmisten (zumal von den 23 Requests noch 2 ein 404er liefern). Selbst lokal gibt es für die Performance beim Test mit Lighthouse keine 100 Punkte …
  • "groups" ist ab MySQL 8.0.2 eine reserviertes Wort womit alle Querys auf die gleichnamige Tabelle fehlschlagen da der Tabellennamen im Code nicht mit Backticks maskiert ist
  • die Tabellen sind fast immer zu breit für das Layout (liegt teilweise auch an den Überschriften der Spalten, in der Tabelle für die Aufgaben in quasi jeder Überschrift das Wort "Aufgabe" zu haben ist nicht nötig). In der Tabelle mit den letzten Aktivitäten z.B. sollte die Spalte "Ereignis" umbrechen damit der User nicht horizontal scrollen muss. Bei anderen Tabellen (z.B. Übersicht Benutzer oder Aufgaben) wird es richtig übel, die sind quasi unbedienbar da die drei Punkte mit dem Menü zum Bearbeiten (es wäre Platz für zwei Icons in der "Verwalten"-Spalte die das Menü überflüssig machen würden) außerhalb des sichtbaren Bereichs sind. Noch schlimmer wird es wenn nur nur eine Aufgabe in der Liste steht: dann muss man nach dem Öffnen des Menüs erst noch runter scrollen um die Einträge zu sehen
  • Die Ausgabe von Datum und Zeit in dem Format wie es aus der Datenbank kommt ist zwar nicht falsch, üblich ist aber eben das Format 11.05.2022 statt 2022-05-11 und auch die Ausgabe von Sekunden ist nicht nötig und macht es lesbarer
  • du beachtest den Kontextwechsel zu HTML nicht: ein Aufgabenname "<em>foo</em>" ergibt ein kursives "foo" - das darf nicht sein! Verwende *immer* htmlspecialchars() um Daten in den HTML-Code zu schreiben.
  • Google-Fonts sind im Bildungsbereich imho ein No-Go. Auf jeden Fall musst du dir *vor* der ersten Benutzung das Einverständnis für die Datenweitergabe einholen. Einfach weg damit.
  • in der Browserkonsole hagelt es Fehlermeldungen, besonders die komische perfect-scrollbar.js macht einiges was Blink nicht mag. Bemängelt wird aber auch dass document.write vermieden werden sollte und dass ein querySelector fehl schlägt (aufgrund der Minifizierung des Scripts hatte ich keine Lust rauszufinden wo genau das Problem liegt)
  • auch der Validator ist mit der Seite nicht einverstanden: bei URLs in Links und Formularen wurde der doppelte(!) Kontextwechsel nicht behandelt, Werte müssen URL-Kodiert werden damit u.a. keine Leerzeichen in der URL stehen. Dann habe ich noch doppelte IDs gesehen, bei einzelnen for-Attributen von label-Elementen passt der Wert nicht zur ID des Formular-Elements, <button> darf nicht in <a> stehen und falsche Verschachtelung von Elementen kommt auch gerne vor.
  • warum machst du es dir so schwer und hast in jeder Unterseite das komplette HTML-Grundgerüst drin? Viel Spaß wenn du was ändern willst
  • warum lang="en" und nicht de im html-Element?
  • user-scalable=no, minimum-scale=1.0, maximum-scale=1.0 hat in der viewport-Angabe nichts zu suchen, weg damit
  • du solltest überprüfen ob der Kontrast ausreichend ist - beim Menü ist er es z.B. nicht.
  • der Link oben rechts hat keine Beschriftung, das darüber "erreichbare" Menü ist damit eben nicht erreichbar. Zudem hast passiert mit einem Link mit href="javascript:void()" beim Klicken ohne Javascript nichts - Elemente die nur per JS funktionieren sind dürfen auch nur sichtbar sein wenn JS aktiviert und verfügbar ist. Allerdings ist href="javascript:void()" ein ohnehin falsch, das ganze wäre gerne ein <button>.
  • alle Buttons mit type=reset kannst du getrost in die Tonne kloppen, die waren noch nie sinnvoll
  • im Schüler-Frontend führt der Versuch Angaben im Profil zu Ändern zu einer Fehlermeldung da es Möglichkeit nur im Admin-Menü gibt. Die 404er Seite ist allerdings sehr verwirrend da sie von irgendeinem Komma schwafelt, zudem liefert sie als Statuscode einen 200er …
  • das gespeicherte Passwort sollte nicht ausgegeben werden (ist ohnehin nur verwirrend, außerdem ist das keine Verschlüsselung sondern ein Hash), zum Ändern des Passworts sollten es auch drei Felder sein: eines für das alte Passwort und zwei für das neue.
  • beschäftige dich mit dem EVA-Prinzip
  • zwei unterschiedliche Logins halte ich für verwirrend und fehleranfällig, warum nicht ein Login und je nach Rechten bekommt man eben unterschiedliche Menüpunkte zu sehen
  • mit Normalisierung ist es in der Datenbank nicht weit her: die Werte in groups.group_institution gehören in eine eigene Tabelle
  • in folders.filder_owner gehört kein Name sondern die ID aus der users-Tabelle (analog dazu gibt es viele weitere Spalten in die eigentlich die ID aus einer anderen Tabelle gehört
  • statt Ja/Nein würde ich eher 0 und 1 in der Datenbank verwenden
  • die Links am Ende der Seite (btw: Finger weg von target=_blank) funktionieren teilweise nicht, außerdem: warum steht da Version 1.1.2 und unter dem Logindialog 1.3.0?
  • aria-label="Multiple select example" ist für ein select zum Auswählen von Benutzern jetzt nur mäßig sinnvoll
  • das Update auf 1.3.0 wirft nur ein Zugriff verweigert bei mkdir() in Zeile 21 (do_core_upgrade.php) mit zwei weiteren Folgefehlern
Das sollte vorerst mal reichen, den Editor z.B. habe ich garnicht weiter angeschaut (achja, da nervt das alert-Fenster wenn man eine Datei in dem System nicht bekannten Format öffnen will). Falls irgendwas nicht klar ist, frag nach.
 
N

Nycrofox

New member
Beiträge
2
Punkte Reaktionen
0
Ich schau Mal und werde dann Änderungen umsetzen. Bei Problemen bzw. Fragen melde ich mich. Trotzdem danke dir für alles!
 
Thema:

Freiwillige Überprüfung meines Programmierprojektes?

Oben Unten