Ankündigung

Einklappen
Keine Ankündigung bisher.

Frameworks und Routing

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Frameworks und Routing

    Hallo zusammen,

    durch diesen Post http://www.php.de/forum/webentwicklu...iten-erstellen bin ich auf das Routing gestossen.
    Damit ich nicht dauernd in einem fremden Post dazwischenfunkte eröffne ich einen neuen.
    Ich hoffe, das ist o.k.

    Ich hätte noch ein paar grundsätzliche Fragen dazu.
    Ab welcher Projektgröße nutzt ihr Frameworks und das Routing? Oder nutzt ihr es immer?
    Was ist der Vorteil?
    Ich habe ein paar php-Dateien die einfach per <a href=""> verlinkt werden.
    Ja, die Endung wird durch das Routing nicht mehr angezeigt und die URLs sind besser lesbar. Was ist sonst der Vorteil gegenüber der "normalen Verlinkung"?
    Habt ihr dann nur die index.php und bindet alle anderen Teile über das Routing ein? Wenn ja, habt ihr dann verschiedene Teile (z.B. header, Menü, Inhalt, Footer) die ihr "zusammenbaut"? Sind diese Teile dann php-Datein, tpl-Dateien oder etwas ganz anderes?

    Welches Framework könnt ihr empfehlen (wenn möglich, einfacher Einstieg)?

    Gibt es vielleicht eine gute Seite wo so allgemeine Fragen benatwortet werden?

    Herzlichen Dank schonmal für eure Aufklärung.
    VG
    NAdja

  • #2
    [MOD: Verschoben von PHP-Einsteiger]

    Kommentar


    • #3
      Zitat von nadjak Beitrag anzeigen
      Ich hätte noch ein paar grundsätzliche Fragen dazu.
      Ab welcher Projektgröße nutzt ihr Frameworks und das Routing? Oder nutzt ihr es immer?
      Sobald es über Herumspielerei oder kurze Tests hinausgeht, verwende ich immer Routing. Der Aufwand ist minimal, aber man profitiert sehr schnell davon.

      Ich weiß, du fragst im Kontext von PHP. Aber um mal etwas über den Tellerrand hinaus zu blicken: Ich programmiere zur Zeit primär in C#, wo von Haus aus schon ein Framework dabei ist (.NET) um das man schwer herum kommt. Also arbeite ich in dem Fall immer mit zumindest einem Framework.

      Zitat von nadjak Beitrag anzeigen
      Was ist der Vorteil?
      Man muss sich nicht um diverse Standardaufgaben kümmern. Wenn man Suppe kocht, kauft man ja auch das Salz im Supermarkt und geht nicht selber mit der Spitzhacke ins Salzbergwerk.

      Zitat von nadjak Beitrag anzeigen
      Ich habe ein paar php-Dateien die einfach per <a href=""> verlinkt werden.
      Ja, die Endung wird durch das Routing nicht mehr angezeigt und die URLs sind besser lesbar. Was ist sonst der Vorteil gegenüber der "normalen Verlinkung"?
      Ein logischer und lesbarer Aufbau. Aber technisch gesehen ist es eigentlich egal. Dem Server interessiert nicht, wie "schön" eine URL ist, er liefert einfach nur den passenden Response.

      Zitat von nadjak Beitrag anzeigen
      Habt ihr dann nur die index.php und bindet alle anderen Teile über das Routing ein? Wenn ja, habt ihr dann verschiedene Teile (z.B. header, Menü, Inhalt, Footer) die ihr "zusammenbaut"? Sind diese Teile dann php-Datein, tpl-Dateien oder etwas ganz anderes?
      Jetzt vermischst du aber einige Dinge. Prinzipiell ist es immer vernünftig mit Templates (oder auch Views genannt) zu arbeiten. In welcher Sprache die Views geschrieben sind, ist erstmal nachrangig. Aber PHP bietet sich innerhalb eines PHP-Projekts stark an. Ich bin kein Fan von exotischen Sprachen, auch wenn sie inzwischen doch verbreitet sind. Es gibt altbewährte Standards, die sehr gut funktionieren.

      Es gibt mindestens einen allumfassenden "Master-View", wo der Grundaufbau der Seite enthalten ist. Also zB. HTML-Header, CSS/JavaScript-Verlinkungen, etc.

      Zitat von nadjak Beitrag anzeigen
      Welches Framework könnt ihr empfehlen (wenn möglich, einfacher Einstieg)?
      Da ich schon lange aus der PHP-Entwicklung raus bin, habe ich keinen aktuellen Überblick, der auf Erfahrungen basiert. Ich habe früher mal mit Zend Framework gearbeitet, aber das ist schon ein paar Jahre her. http://www.slimframework.com/ sieht ziemlich einfach aus und ist denke ich für den Einstieg bzw. für Mikroprojekte gut geeignet.

      Kommentar


      • #4
        Wow! Vielen herzlichen Dank für deine ausfürhliche Antwort!
        Jetzt habe ich bei meinem Projekt schon fast alle Seiten fertig und möchte natürlich möglichst ohne großen Aufwand umbauen.
        JaMa stellt in diesem Post http://www.php.de/forum/webentwicklu...iten-erstellen ein einfaches Routing auf Seiten vor. Ich würde dies gerne für den Anfang ausprobieren.
        Mir ist aber noch nicht so ganz klar, wo ich den Code einbaue.
        Meine Seiten sind folgendermassen aufgebaut:
        die einzelnen Seiten binden per include das Menü ein. Die index.php liegt im root, die Seiten in einem Ordner, die menü-Datei in einem anderen Ordner und die Klassendateien auch in einem eigenen Ordner.
        Auch habe ich das Problem, dass bei vielen Links / Seitenaufrufen eine ID übergeben werden muss. Im Moment habe ich das über Formulare gelöst (damit die IDs per Post und nicht per GET übergeben werden).

        Vielen Dank
        Nadja

        Kommentar


        • #5
          Kannst dir auch mal diesen Link ansehen:

          https://bitbucket.org/snippets/Tera3.../routingklasse << Das eine eigene Routingklasse wenn du die mal Schritt für Schritt durchgehst siehst du die einfache Funktionsweise.

          Kommentar


          • #6
            Sorry, aber irgendwie steh ich grad total auf dem Schlauch:
            Ich rufe deine run() auf. Rufe ich sie in meinem Link bzw. meinem Formular auf? Und woher weiß die Methode dann, auf welche Seite geleitet werden muss?
            VG
            Nadja

            Kommentar


            • #7
              Wenn ich das korrekt interpretiert habe, dann könnte eine Anwendung so aussehen:

              https://gist.github.com/chrisandchri...51157e88121de4

              Kommentar


              • #8
                Vielen Dank!
                lg Nadja

                Kommentar


                • #9
                  Hallöchen,

                  ein Router sorgt nicht nur für schöne URLs, sondern stellt auch eine zentrale Anlaufstelle für alle Requests dar. Damit vermeidest du, dass der Client mit vielen unterschiedlichen PHP-Scripts kommunizieren muss. Das Bootstrapping für jeden Seitenaufruf kann also zentral stattfinden.

                  Viele Grüße
                  lotti

                  Kommentar


                  • #10
                    Hallo!

                    Ich habe auch so ein "Routing" (habe ich mir programmieren lassen). Vorteil ist dass nur das ausgeliefert wird was existiert. Alles andere wird mit einer eigenen Fehlermeldung quittiert. Die "error_log" bleibt leer, da für den Server selber alle Anfragen korrekt sind. Die Fehlerprüfungen erfolgen innerhalb des Templates. Alle eingegebenen Links die nicht in den Config-Dateien stehen werden als fehlerhafte Anfrage deklariert und mit einer Fehlermeldung quittiert. Mit dem Ergebnis dass Angreifer zu 99% keine Chance haben. Ein Restrisiko bleibt natürlich immer.

                    Gruß, René

                    Kommentar


                    • #11
                      mumpel Dein Error-Handling passiert also im Template? Was für Angrifsszenarien verhinderst du konkret damit?

                      Kommentar


                      • #12
                        Zitat von mumpel Beitrag anzeigen
                        Hallo!
                        ...
                        Alles andere wird mit einer eigenen Fehlermeldung quittiert. Die "error_log" bleibt leer, da für den Server selber alle Anfragen korrekt sind.
                        ...
                        Mit dem Ergebnis dass Angreifer zu 99% keine Chance haben. Ein Restrisiko bleibt natürlich immer...
                        Ich würde 400er trotzdem ins error_log/error.log laufen lassen und das Logfile von bswp. fail2ban mitparsen lassen ... ggf. Bilder & favicon.ico als ignoreregex anlegen und gut.

                        Viele Grüße - Stef

                        Kommentar


                        • #13
                          Hallöchen,

                          Zitat von mumpel Beitrag anzeigen
                          Ich habe auch so ein "Routing" (habe ich mir programmieren lassen).
                          Wozu, wenn es bereits sehr gute und performante Implementierungen gibt?

                          Zitat von mumpel Beitrag anzeigen
                          Vorteil ist dass nur das ausgeliefert wird was existiert. Alles andere wird mit einer eigenen Fehlermeldung quittiert. Die "error_log" bleibt leer, da für den Server selber alle Anfragen korrekt sind. Die Fehlerprüfungen erfolgen innerhalb des Templates. Alle eingegebenen Links die nicht in den Config-Dateien stehen werden als fehlerhafte Anfrage deklariert und mit einer Fehlermeldung quittiert. Mit dem Ergebnis dass Angreifer zu 99% keine Chance haben. Ein Restrisiko bleibt natürlich immer.
                          Mit der von mir empfohlenen Komponente lässt sich exakt das abbilden, allerdings macht das nicht die Routing-Komponente, denn diese ist dafür nicht zuständg. Die Routing-Komponente meldet dir nur, ob die angefragte Route gefunden wurde oder nicht. Entsprechend darauf zu reagieren bleibt dir überlassen.

                          PS: Generell sollte man darauf achten, dass durch einen Aufruf keine serverseitigen Fehler passieren, bzw. diese nicht nach außen getragen werden. Maximal in Form eines 500er-Status. Die Fehlermeldung gehört in ein Log. Ich persönlich logge auch alle Requests die auf meinen APIs auflaufen, damit ich in Problemfällen genau weiß welche Ressourcen angefragt wurden.

                          Viele Grüße
                          lotti

                          Kommentar


                          • #14
                            Zitat von lottikarotti Beitrag anzeigen
                            (...) Wozu, wenn es bereits sehr gute und performante Implementierungen gibt? (...)
                            Es gibt aber keine deutschprachigen Anleitungen. Alles immer nur englisch. Zudem habe ich etwas spezielles benötigt (ich möchte z.B. auch Uraltlinks, die immernoch im Netz sind, auf die aktuellen Clean-Urls umlenken, damit der Seitenbesucher nicht mit Fehlermeldungen konfrontiert wird und nicht selber suchen muss).


                            Zitat von lottikarotti Beitrag anzeigen
                            (...) Entsprechend darauf zu reagieren bleibt dir überlassen (...)
                            Das ist in der index.php definiert.






                            Kommentar


                            • #15
                              Zitat von ChristianK Beitrag anzeigen
                              (...) Dein Error-Handling passiert also im Template? (...)
                              Das gehört zum Template. Korrekt gesagt findet die "Abfrage" in der index.php statt.

                              Kommentar

                              Lädt...
                              X