Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Allgemeine Frage

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Allgemeine Frage

    Hallo
    hätte da mal ne Frage

    ich habe bei einem script im internet gesehen dass dort fast alles was man anklickt über die URL index.php?view=blabla läuft
    zb view=newsletter
    view=anmelden
    view=hier

    es gibt an die 50 befehle die so sind

    wird dann die index.php nur dazu genutzt um je nach eingabe an eine andere datei weiterzuleiten? oder wie wird sowas gemacht?


  • #2
    Es gibt verschiedene Ansätze. Verbreitet ist die Art, die Anwendung in Module zu unterteilen und je nach URL wird dann dieses oder jene Modul geladen.
    Natürlich besteht die index.php nicht aus lauter if/elseif/else-Anweisungen.
    Aber ich rate dir davon ab, da es recht komplex ist. Außerdem solltest du es wenn dann auch besser machen, als die Leute dieses Shops und URL-Rewriting einsetzen. Solche URLs sind nämlich weder benutzer- noch suchmaschinenfreundlich. Außerdem werden GET-Parameter in vielen Statistiken nicht mitgeloggt, sodass Webmaster, die sehen wollen, von wo überall ihre User herkommen, nur den Dateinamen index.php ohne ?view=blabla sieht und damit natürlich herzlich wenig anfangen können.
    Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

    Kommentar


    • #3
      ok das heisst besser ist

      reale namen zu benutzen und direkt an url newsletter.php weiter zu leiten bei nem link

      Kommentar


      • #4
        Oder wenigstens real aussehende Namen per URL-Rewriting in solchen Kauderwelch umwandeln. Nach außen hin sollte man von dieser internen Struktur nichts mitbekommen.
        Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

        Kommentar


        • #5
          okey dann werde ich das so machen

          Kommentar


          • #6
            Zitat von Manko10 Beitrag anzeigen
            Aber ich rate dir davon ab, da es recht komplex ist.
            Diese Aussage kann ich nicht nachvollziehen. Nennt sich Froncontroller Pattern und ist absolut praktisch (selbst für kleine Seiten), um die Struktur der Anwendung zu abstrahieren.
            --

            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
            Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


            --

            Kommentar


            • #7
              mehr als das ist es nicht:

              Code:
              <? $view = $_GET['view']; if($view=="anmelden"){include("anmelden.php")} //etc... ?>

              Kommentar


              • #8
                Sinnvollerweise sollte man für komplexe Seiten statt einer If-Struktur ein Setting, bspw. ein Array {getParameter} => {include} verwenden. Du kannst auch einen zusätzlichen Error Eintrag machen und über array_key_exists () eine Art Fallback für fehlerhafte Parameter verwirklichen.

                Hüten solltest Du Dich vor Konstrukten wie dem:
                PHP-Code:
                include ('pfad/' $_GET['view'] . '.php'); 
                , weil hier über einen Parameter wie ../../../lib/geheim schnell eine große Sicherheitslücke entstehen kann.

                btw: Benutze das nächste mal bitte einen aussagekräftigen Threadtitel.
                --

                „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                --

                Kommentar


                • #9
                  @nikosch77: lies den Satz mal weiter.
                  Es war nicht so gemeint, dass ich nichts davon halte, es war nur so gemeint, dass es für den Anfang ein wenig zu komplex wäre.
                  Aber gut, wenn robydog einen Front Controller haben will, kann er ihn haben.
                  Aber gib ihm bitte nich den Tipp, eine GET-Variable in in einem Include zu benutzen...
                  Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

                  Kommentar


                  • #10
                    wieso nicht so?
                    und wie dann?

                    und das ich das mit dem Front Pattern schnalle ist eh nicht anzunehmen hab kurz geschaut aber ist wohl nichts für mich

                    Kommentar


                    • #11
                      Das dachte ich mir.
                      Zu deiner Frage: das darfst du nicht, weil $_GET alles enthalten kann, was der User eingibt und du keine Kontrolle hast, was du in das include einträgst (möglicherweise bindest du eine fremde PHP-Datei ein, die dann auf deinem Server Unfug macht).
                      Du musst solche Eingaben also immer gegen eine White-List prüfen und nur bei erfolgreicher Validierung ein include mit dem Wert durchführen.
                      Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

                      Kommentar


                      • #12
                        das kann ich ja mit mysql real escape string vermeiden oder seh ich das falsch?

                        Kommentar


                        • #13
                          Jap, das siehst du falsch.
                          mysql_real_escape_string() ist nur dafür da, um Datenbankabfragen sicher durchzuführen, nicht um Datei-Pfade zu validieren.
                          Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

                          Kommentar


                          • #14
                            ach so das heisst aber dass man überall den Get befehl durch diese white list filtern müsste oder seh ich das auch falsch?

                            Kommentar


                            • #15
                              Wenn du einen GET-Befehl filtern willst, kannst du das gerne machen, aber dachte aber eher an das GET-Array.
                              Zur White-List: du hast ein Array mit allen gültigen Werten und prüfst nun, ob der Wert des GET-Feldes exakt im White-List-Array wiederzufinden ist. Wenn nicht, brichst du ab.
                              Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

                              Kommentar

                              Lädt...
                              X