Ich hätte einige Fragen zur Programmierung in PHP aber auch vor allem einige zur "sicheren" und strutkurierten Programmierung in PHP. Ich weiß, das es viele Fragen auf einmal sind aber ich hoffe mal dennoch auf Antworten. Ich weiß teilweise auch einfach nicht, wonach ich da konkret suchen soll, um Antworten zu finden.
Erst einmal eine einfache Frage so:
Lohnt sich ein genauerer Blick auf MVC oder einen der Ableger? Da gibt es ja glaube ich einige oder ist MVC so "roh" am meisten genutzt oder gibt es vielleicht noch was besseres? Ich habe meine Programme natürlich schon im Sinne von OOP aufgebaut aber woher soll man so schon wissen, ob man sein Programm so auch gut aufgebaut hat? Es gibt ja viele Ansätze und mit Sicherheit auch einige "gute" Lösungen. Da kennen sich hier ja hoffentlich einige besser mit aus und vielleicht auch (und hoffentlich) in größeren Umfängen ebenfalls.
Hier jetzt mal einige Fragen als Liste, damit es übersichtlicher bleibt. Erst einmal dabei zu der
Sicherheit / Zugriff:
1) Wie lagert man Dateien sicher auf dem Server und Zugriffssicher?
1.2) Wo lagert man die Sachen dann konkret auf dem Server? Wo würden dann die HTML, PHP Dateien etc. konkret liegen? Derzeit habe ich alles im var/www/html Verzeichnis liegen.
2) Wie sichert man Dateien ab, die sich im Backend befinden, also sodass nur der Berechtigte Zugriff darauf hat? Reicht da eine einfache Überprüfung mit der Session "auth"oder wie auch immer man diese genannt hat oder muss man da noch etwas machen?
4) Wie könnte man da eine Weiterleitung realisieren, sodass wenn man schon eingeloggt ist, weitergeleitet wird oder wenn man nicht eingeloggt ist, das man dann zum Login weitergeleitet wird oder nach einem erfolgreichem Login? Derzeit
habe ich das auch so in PHP gelöst, also wenn ich nicht eingelogtt bin,was ich auch wieder mit der Session prüfe, dann wird man mit
zur no-access Seite weitergeleitet und die leitet dann zur Login Seite weiter. Da wird dann auch oben, mit einem zusätzlichen $_GET Paramter (forward derzeit) die Seite jeweils mitgegeben. Ob das jetzt eine gute Lösung ist, weiß ich nicht aber so funktioniert es derzeit schon einmal.
Die index.php Datei nutze ich auch zur Weiterleitung, sodass oben nichtdirekt der Name der Datei steht, sondern bspw. einfach nur index.php?page=comment usw.
5) Sollte man eigentlich alle HTML Dateien auch als PHP Datei speichern? irgendwo habe ich das glaube ich schon einmal gelsen aber warum?
Struktur / Aufbau:
1) Derzeit arbeite ich an einer größeren Seite mit Login, Kommentaren usw. um mich weiterzubilden. Dort habe ich also auch dementsprechend eine Klasse Login. Sollte man denn aber dann einen Kunden auch intern als Klasse haben, also mit nickname, name, vorname usw. oder reichen da die Operationen für die Kunden? Also eine Klasse die dann die Operationen durchführt, also hinzufügen, löschen usw.?
Reichen die Operationen also schon oder sollte man den Kunden intern auch wirklich als Objekt halten? Irgendiwe erschließt sich mir da kein Sinn drin, den Kunden auchwirklich als Objekt zu halten, geschweige denn, diese dann auch vielleicht in einer Collection zu halten. Bei x (x=100000 z.B) Kunden wäre das Collection ja schon ziemlich groß oder nicht und dementsprechend langsam. Macht das überhaupt seinen Sinn mit DB?
2) Wie sollte eine Ordnerstruktur auf dem Server am besten aussehen? Zurzeit habe ich ein Verzeichnis für das Frontend und Backend, wo die PHP Dateien liegen. Eines für die CSS Dateien, für die Bilder, für die js Dateien (js) und eines für die HTML Dateien (Templates) als Smarty Datei(.tpl) gespeichert.
Außerdem habe auch noch eine Config und eine Initalisierungdatei direkt im var/www/html Verezichnis liegen. Da meine ich auch schon einmal gelsen zu haben, das man die am besten im Verzeichnis darüber lagert?
3) Braucht man eigentlich nachher in größeren Projekten überhaupt noch einzelne PHP Dateien oder sollten das schon alles Klassen sein? Da blicke ich irgendwie auch gar nicht durch, wie das dann nachher überhaupt am besten aussehen sollte. Bestimmt gibt es da auch mehrerer Wege aber auch da gibt es ja bestimmt gute und schlechte.
4) Ich habe jetzt ja auch in meinem Projekt eine Klasse, die bspw. die Operationen auf der DB für die Einträge darstellt. Sollte man da auch wieder eine Collection haben, wo dann die Einträge gespeichert werden? Eine interne Repräsentation also oder reichen da die Operationen, wie Entry.Add(.. ) usw. (also keine interne Repräsentation)?
5) Ich habe derzeit auch in vielen Dateien einige (zu viele?) includes stehen und da muss man ja auch immer jeweils den Pfad angeben, was ich dann auch über die index.php Datei mache aber wie hält man sowas einfacher? In der index.php muss ich dann ja jeden Pfad zu der Datei so angeben. Wie hält man das einfacher, sodass man auch nicht jede Datei so angeben muss oder jeden Pfad? Kommt mir irgendwie kompliziert oder "umständlich" vor.
<?php
....
$page = isset($_GET['page']) ? trim($_GET['page']) : 'index';
switch($page)
{
// ....
case 'create-comment':
include('Frontend/comment.php');
break;
case 'no-access':
include('no-access.php');
break;
// ...
}
?>
Alles anzeigen
Das wäre es dann auch mit meinen ganzen Fragen. Da staut sich aber auch über die Zeit viel an und daher ich das nur Hobbymäßig mache, muss ich ja eigentlich schon fast irgendwo fragen oder irgenjemanden fragen.
Über Antworten oder Hilfe, Tipps bzw. auch gerne Links oder Literaturvorschläge würde ich mich sehr freuen!
Niemand? Ihr müsst auch nicht alle Fragen beantworten. Ein paar gehen auch, falls ihr nur wenig Zeit habt oder ebend die Antworten zu der einen oder anderen Frage nicht wisst. Ich habe auch schon selbst wieder ein wenig geguckt aber bei den Zusammenhängen, die da teilweise bestehen ist es auch nicht leicht, eine Antwort zu finden.