Hallo Mad0ck,
auf die ersten beiden Fragen wurde meiner Meinung nach schon sehr präzise geantwortet, doch habe ich noch etwas zum Thema Frameworks sowie AdminPanel beizutragen.
Es gibt derzeit zahlreiche PHP-Frameworks im Web, die größtenteils sogar vollumfänglich kostenlos sind und quelloffen.
Laravel, das auf Symfony aufbaut, ist ein sehr mächtiges und sehr umfangreiches Framework. Das macht es zunächst nicht ganz leicht, es in Gänze zu durchschauen bzw. zu verstehen, aber das gibt sich mit der Zeit - in jedes Framework wirst du dich zunächst einarbeiten müssen.
Besonders dann, wenn es Techniken anwendet, mit denen du bisher noch keine Erfahrungen gesammelt hast (bei Laravel z.B. Stichwort Blade-Templating, Routing, Models, Controllers, Database Migrations, ...).
Laravel bietet beispielsweise einen hauseigenen Broadcastservice an:
[Only registered and activated users can see links. Click Here To Register...]. Die meisten Videos dort sind kostenfrei, die etwas mehr sophisticated/tiefer in die Materie gehenden dann z.T. nicht. Die Videos sind getreu ihrem Motto ("
It's kinda like Netflix for your career") in Episoden bzw. Serien gestaffelt und machen es dir leicht, von Anfang an mit dem Framework zu beginnen. Ich konnte Laravel sehr gut mittels Laracasts näher kennenlernen (zuvor war ich bereits "konventioneller" PHP-Entwickler) und musste für die Themenbereiche, die ich tatsächlich gebraucht hatte, nichts bezahlen. Die Mitgliedschaft kostet dort 15 $ im Monat. Das Forum, was Laracasts einschließt, ist kostenfrei und du kannst dort deine Fragen posten (besonders am Anfang, das kann ich dir aus erster Hand berichten, wirst du dort öfter vorbeischauen - ob durchs Googlen oder Selbstfragen); der Community-Support ist da durchaus sehr gut und hilfreich m.E.
Das alles hat nur einen Haken (oder auch nicht): Es ist auf Englisch - vollständig. Für mich war das überhaupt kein Problem, nur kenne ich durchaus einige meiner Kollegen, die sich soetwas nicht gerne auf Englisch nähern - das musst du wissen.
Frameworks werden besonders bei mittleren oder größeren Projekten zum Einsatz gebracht, um eine gewisse grundsolide Sicherheit bzw. später die Wartbarkeit sicherzustellen. Paketmanager wie Composer sind unmittelbar Teil dieser Frameworks, die ebengenannte Wartbarkeit garantieren sollen.
Man kann, -zumindest aus meiner Erfahrung heraus-, also durchaus sagen, dass Frameworks besonders dann zum Einsatz kommen, wenn's um ein geweisses Maß an Ernsthaftigkeit oder Seriosität geht; diese Frameworks "blasen" natürlich dein Projekt auf und machen es, -ganz gleich ob du gut damit umgehen kannst oder nicht-, unübersichtlicher und größer, und diesen Mehraufwand braucht man sich nicht leisten, wenn man "es nicht ernst genug meint" bzw. der seriöse Anwendungszweck einfach nicht gegeben ist.
Viele Webseiten von Privatservern jedweder Art von Spielen sind nicht gut entwickelt bzw. programmiert und sind daduch anfällig für Hackerangriffe - dadurch gibt es immer wieder Datenbankleaks oder Sonstige. Und dann gibt es gelegentlich gut durchdachte und entwickelte/programmierte Privatserver mit dazugehöriger Webseite - auch, wenn diese vielleicht nicht auf ein großes Framework wie Symfony oder Laravel setzt, setzen Coder, die einem Projekt eine gewisse Ernsthaftigkeit beimessen, auf kleinere, sogenannte leightweight Frameworks wie beispielsweise Laravel Lumen oder CakePHP. Auch CodeIgniter ist für solche Projekte durchaus interessant.
Es kommt demnach also immer primär auf den Anwendungszweck und die Größe bzw. den Umfang deines Projektes an.
Zum Thema AdminPanel: Natürlich genügt es zur technischen Funktion, dass du einen nummerischen Wert auf 0 bzw. 1 setzt für ein Attribut in deiner Datenbanktabelle (z.B. "admin"; 0 = false, 1 = true). Ich kenne dein Projekt nicht im Einzelnen, aber bedenke, dass du dabei ein binäres Rechtesystem schaffst: User und Admin. Dabei lässt du zunächst nicht zu, eine weitere Berechtigung (wie z.B. die eines Moderators) hinzuzufügen, ohne signifikant in deinen Code wieder einzugreifen. Du könntest stattdessen beispielsweise ein Attribut "rank" aufstellen, das beispielsweise so funktioniert: "0" = gesperrt, keine Berechtigungen, "1" = User, "2" = Moderator, "3" = Admin. So könntest du ein kleines Rechtesystem implementieren. Im nächsten Schritt wäre eine weitere Datenbanktabelle z.B. "Permissions" möglich, wo du dann gemäß des Ranges einer Berechtigung einen Namen zuteilst und diese erlaubst (z.B. "user.login" erfordert "rank" = "1", bzw. "admin.login" "rank" = "3"). Aber auch hier gilt: Kenne den Umfang deines Projektes. Sowas kann sehr nützlich bzw. hiflreich weiterhin sein, wenn man zu Beginn ein kleines System wie o.g. implementiert, doch unnötig und nervig-zeitraubend, wenn man es nie benötigen wird.
Entschuldige bitte diesen Beitrag der Länge der Bibel. :-D