borisbaer: Wie baue ich eine Website auf?

Hallo zusammen,

ich stecke in einer Sackgasse, was den Aufbau meiner Website betrifft. Zunächst hatte ich einfach mal drauflos geschrieben: Erst HTML, dann CSS, anschließend JavaScript und schließlich PHP PP. Es war learning by doing, denn ich musste ja von Null anfangen und wusste gar nicht, was überhaupt möglich sein würde. In jüngster Zeit habe ich mich verstärkt mit PHP OOP beschäftigt und versucht, dem MVC-Muster zu folgen. Ich habe nämlich gemerkt, dass der Aufbau, wie ich ihn mir anfangs vorgestellt habe, für umfangreichere Seiten nicht wirklich geeignet ist bzw. es heutzutage deutlich effizientere Möglichkeiten gibt.

Nun, ein basales PHP-Framework (OOP) für die bloße Organisation der Website zu erstellen, traue ich mir für die Zukunft eigentlich zu – auch wenn es sicherlich sehr primitiv sein wird. Jedoch hadere ich sehr mit der Registrier- bzw. Login-Funktion. Ich habe nicht vor wirklich sensible Daten zu speichern, maximal die E-Mail-Adresse (und auch das wohl nicht zwangsweise). Es braucht also keine Top-Sicherheitsmaßnahmen. Ich könnte wohl ein paar einfache Sicherheitsvorkehrungen einbauen (Passwort-Hashing usw.), aber auch nicht mehr. Trotzdem bin ich mir hierbei sehr unsicher, ob ich das überhaupt auf eigene Faust machen sollte.

An vorgefertigten PHP-Frameworks wie Laravel hatte ich bisher kein Interesse, weil es mir zu undurchsichtig schien und ich nie den Eindruck hatte, diese für meine bescheidenen Zwecke zu benötigen. Außerdem wollte ich ja PHP lernen und nicht die Syntax eines Frameworks. In Bezug auf die Speicherung von Benutzerdaten überlege ich jetzt aber doch, inwieweit ich möglichweise ein solches PHP-Framework verwenden sollte.

Ich habe einmal grob folgende Anforderungen für meine Website notiert:

Backend: PHP-Framework (OOP) und SQL-Datenbank
benötigte Features:

  • Benutzer (Registrierung & Login)
    • users: id, url, username, password, email
  • Speichern von benutzerspezifischen Werten (v.a. integers & booleans) in SQL-Datenbank
    • Beispiel: Auf der Seite foo gibt es eine Checkbox und einen Zähler; den Status dieser Elemente soll ein eingeloggter Benutzer speichern können.

Frontend: HTML-Templates, JSON-Inhalte

  • HTML-Templates für Darstellung
  • JSON-Dateien für Inhalte

Sollte ich mit diesen Anforderungen auf ein vorgefertigtes Framework zurückgreifen oder mich selbst dranmachen, ein solches zu erstellen, das eben nur auf meine Website zugeschnitten ist?

Grüße
Boris

  1. Sollte ich mit diesen Anforderungen auf ein vorgefertigtes Framework zurückgreifen oder mich selbst dranmachen, ein solches zu erstellen, das eben nur auf meine Website zugeschnitten ist?

    Das kommt 1. auf den beabsichtigten Inhalt, 2. auf den beabsichtigten Inhalt und 3. auf den beabsichtigten Inhalt an - und ist genau wie bei Fahrzeugen: Willst Du schnell mal zum Brötchenholen oder musst Du Getränkekisten von weit herholen oder mit einem Wohnmobil entweder zu den oberitalienischen Seen oder gar abseits aller Straßen durch die Wüste Gobi oder die Sümpfe Floridas ziehen?

    1. Hallo Raketenwilli,

      Das kommt 1. auf den beabsichtigten Inhalt, 2. auf den beabsichtigten Inhalt und 3. auf den beabsichtigten Inhalt an - und ist genau wie bei Fahrzeugen: Willst Du schnell mal zum Brötchenholen oder musst Du Getränkekisten von weit herholen oder mit einem Wohnmobil entweder zu den oberitalienischen Seen oder gar abseits aller Straßen durch die Wüste Gobi oder die Sümpfe Floridas ziehen?

      ja, klar, ich weiß, was du meinst. Eigentlich benötige ich nicht allzu viele Funktionen. Werte in der Datenbank speichen und wieder auslesen, mehr nicht. Nichts wirklich Kompliziertes. Ich habe mich aber erst mal gegen ein großes Framework entschieden. Ich versuche, die benötigten Funktionen selbst zu schreiben.

      Grüße
      Boris

  2. Hallo borisbaer,

    das Thema Login solltest Du keinesfalls eigenständig realisieren. Eine fertige Komponente kannst Du bei Bekanntwerden von Problemen - zumeist - schnell Updaten.

    Ich sage "zumeist", weil der Einsatz von Frameworks eine Menge Folgeaufwand hat. Du musst hinterherbleiben, wenn es Updates beim Framework gibt, und je nach Qualität der Autoren kann das von einem einfachen Austausch bis hin zum Neuschreiben von Teilen deiner Anwendung gehen. Gerade bei Sprüngen in der Hauptversion sind breaking changes zu erwarten (genau wie in PHP selbst...)

    Ein riesiges Framework einzubinden, nur um einen Login zu haben, ist vermutlich der falsche Weg. Ich kenne aber leider auch keine brauchbare Standardkomponente für das Login-Handling. Github spuckt da auf Anfrage 28 Treffer aus, ich kann keinen davon bewerten.

    Ein Blick auf die beiden ersten sagt mir, dass das Angebot von msaad1999 der Overkill zu sein scheint und außer einem Backend auch Frontend-Komponenten mitbringt. Das will man normalerweise nicht, weil das Frondend ja zum eigenen Look&Feel passen soll. Der Vorteil fertiger Frondends ist natürlich, dass sie die nötigen Härtungen gegen Attacken mitbringen. VishnuSivadasVS scheint den entgegengesetzten Weg gegangen zu sein, das sieht wie ein reines API ohne Frondend-Einbindung aus.

    Schau Dir diese fertigen System an, zumindest erfährst Du da, worauf Du achten musst. Selfhtml hat das Thema nicht mehr im Angebot, weil uns das Rufschaden-Risiko zu hoch ist, falls jemand unsere Vorlage nutzt und es dann zu Problemen kommt. Wir haben nicht (mehr) die Manpower, eine saubere Vorlage zu erstellen und zu pflegen. Und selbst wenn wir die hätten, besteht immer das Risiko einer falschen Nutzung, und wenn uns dann jemand dafür an den Pranger stellen wollte (wogegen kein Haftungsausschluss dieser Welt schützt) müssten wir eine Falschnutzung erstmal beweisen. Nein danke.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hallo Rolf,

      Ein riesiges Framework einzubinden, nur um einen Login zu haben, ist vermutlich der falsche Weg. Ich kenne aber leider auch keine brauchbare Standardkomponente für das Login-Handling. Github spuckt da auf Anfrage 28 Treffer aus, ich kann keinen davon bewerten.

      ja, davor scheue ich auch zurück. Ich werde mir allerdings die Treffer bei Github genauer ansehen. Mittlerweile habe ich anhand von YouTube-Tutorials schon drei Mal ein Login bzw. Sign-up-System geschrieben. Innerhalb dieser Tutorials wurden auch diverse Sicherheitsaspekte beachtet (mal mehr, mal weniger).

      Ein Blick auf die beiden ersten sagt mir, dass das Angebot von msaad1999 der Overkill zu sein scheint und außer einem Backend auch Frontend-Komponenten mitbringt. Das will man normalerweise nicht, weil das Frondend ja zum eigenen Look&Feel passen soll. Der Vorteil fertiger Frondends ist natürlich, dass sie die nötigen Härtungen gegen Attacken mitbringen. VishnuSivadasVS scheint den entgegengesetzten Weg gegangen zu sein, das sieht wie ein reines API ohne Frondend-Einbindung aus.

      Ich werde meine bisher erstellten Login- bzw. Sign-up-Systeme mit den beiden genannten von Github vergleichen. Mal schauen, was dabei rauskommt.

      Schau Dir diese fertigen System an, zumindest erfährst Du da, worauf Du achten musst. Selfhtml hat das Thema nicht mehr im Angebot, weil uns das Rufschaden-Risiko zu hoch ist, falls jemand unsere Vorlage nutzt und es dann zu Problemen kommt. Wir haben nicht (mehr) die Manpower, eine saubere Vorlage zu erstellen und zu pflegen. Und selbst wenn wir die hätten, besteht immer das Risiko einer falschen Nutzung, und wenn uns dann jemand dafür an den Pranger stellen wollte (wogegen kein Haftungsausschluss dieser Welt schützt) müssten wir eine Falschnutzung erstmal beweisen. Nein danke.

      Ja, der Schutz persönlicher Daten ist sehr heikel. Deswegen auch meine Bedenken.

      Ich habe mich dafür entschieden, erst einmal die grundlegenden Funktionen meines MVC-Frameworks zu schreiben (Routing, Rendering Datenbank-Verbindung usw.), und erst wenn das alles einigermaßen sicher steht, mich um das Sign-up und Login-System zu kümmern.

      Jedenfalls danke für den Github-Verweis!

      Grüße
      Boris