Variablen weitergeben?

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

  • Variablen weitergeben?

    Hallo,

    ich bin oft am überlegen, wann man eigentlich wie die Daten von eine Seite an die andere weitergeben sollte und wann man was verwenden sollte.
    Man kann ja eigentlich nur Daten von eine Seite an die andere Übertragen mit Sessions, $_GET, Cookies und hidden fields oder geht das auch noch anders?

    Aber wann sollte man was verwenden? Ich bin derzeit dabei einen Blog mit allem drum und dran zu erstellen und da bin ich bei einigen Seiten auf dieses Problem gestoßen.

    Mal ein Beispiel: Der Admin kann im backend oder im Admin-Bereich, (wie auch immer) ein Kommentar löschen, bearbeiten usw aber dafür muss der Admin ja auch erst einmal den zugehörigen Eintrag auswählen, also wie gebe ich da die Daten weiter? Ich habe das jetzt mit hidden fields gemacht aber man könnte das ja auch mit $_GET usw. machen, also wann benutzt man was?

    Zudem stelle ich mir auch oft die Frage, wie man diese hidden fields richtig validieren sollte? Wenn man jetzt bspw. den Titel des Eintrages usw. mit übergibt, wie validiert man diesen dann?
    Prüft man dann einfach, ob es sich um einen String handelt? Die Daten können ja auch manipuliert werden und dann könnte ja auch sonst was als Titel da stehen.

    Also, wann benutzt man was und wie validert man diese Daten dann nachher? Gibt es da irgendwo eine Übersicht oder kann mir mal jemand diese Vor- und Nachteile und das wann man was benutzen sollte sagen / erklären?
    Zuletzt geändert von Basoom; 24.04.2015, 23:11.

  • #2
    Zitat von Basoom Beitrag anzeigen
    Mal ein Beispiel: Der Admin kann im backend oder im Admin-Bereich, (wie auch immer) ein Kommentar löschen, bearbeiten usw aber dafür muss der Admin ja auch erst einmal den zugehörigen Eintrag auswählen, also wie gebe ich da die Daten weiter? Ich habe das jetzt mit hidden fields gemacht aber man könnte das ja auch mit $_GET usw. machen, also wann benutzt man was?
    Ich versteh die Problematik nicht. Du kannst ja die Seiten-ID problemlos als GET-Paramter in der URL übergeben. Was stört dich daran? Zu einfach?

    Zitat von Basoom Beitrag anzeigen
    Zudem stelle ich mir auch oft die Frage, wie man diese hidden fields richtig validieren sollte?
    Genauso wie jedes andere Feld. Alle Daten, die vom Client kommen, sind prinzipiell als unsicher anzusehen. Egal wie diese erzeugt oder übertragen wurden.

    Zitat von Basoom Beitrag anzeigen
    Wenn man jetzt bspw. den Titel des Eintrages usw. mit übergibt, wie validiert man diesen dann?
    Was willst du das großartig validieren? Entweder den Titel gibt es oder es gibt ihn nicht.

    Zitat von Basoom Beitrag anzeigen
    Prüft man dann einfach, ob es sich um einen String handelt? Die Daten können ja auch manipuliert werden und dann könnte ja auch sonst was als Titel da stehen.
    Es sollte immer geprüft werden, ob die Daten im richtigen Format ankommen. Im Falle eines GET-Parameters ist das sogar sehr einfach. Der kann entweder ein Array oder sein String sein, sonst nichts.

    Zitat von Basoom Beitrag anzeigen
    Also, wann benutzt man was und wie validert man diese Daten dann nachher? Gibt es da irgendwo eine Übersicht oder kann mir mal jemand diese Vor- und Nachteile und das wann man was benutzen sollte sagen / erklären?
    Das hängt sehr stark von der Art der Daten ab.

    Kommentar


    • #3
      Aber warum als $_GET Parameter? An $_GET finde ich eigentlich ziemlich gut, das man dann oben bspw. die id des Eintrages ziemlich einfach & direkt verändern kann aber wieso nicht einfach nur ein hidden field ohne $_GET oder eine Session oder ein Cookie?

      Das alle Daten prinzipiell überprüft werden sollten, ist mir schon klar aber bei dem "auf was" bin ich mir oft unsicher.

      Zitat von h3ll Beitrag anzeigen
      Was willst du das großartig validieren? Entweder den Titel gibt es oder es gibt ihn nicht.

      Es sollte immer geprüft werden, ob die Daten im richtigen Format ankommen. Im Falle eines GET-Parameters ist das sogar sehr einfach. Der kann entweder ein Array oder sein String sein, sonst nichts.
      Naja, wenn ich den Titel im hidden field übergebe, dann kann dieser ja auch manipuliert werden. Soweit ich weiß in so ziemlich alles und derzeit überprüfe ich nur, ob dieser ein String ist aber reicht das?
      Wenn dann irgendwie oben anstatt des Titels irgendwas anderes steht, wäre das ja schon irgendwie seltsam oder nicht?

      Zitat von h3ll Beitrag anzeigen
      Das hängt sehr stark von der Art der Daten ab.
      Was meinst du damit? Da ist ja auch eines meiner Hauptprobleme. Bis jetzt habe ich da leider noch keine gute Übersicht gefunden.
      Cookies sind ja auch immer so eine Sache, weil diese kann man ja auch auf vielen Seite so direkt deaktivieren oder sogar löschen kann? Bei allen von mir genannten "Typen" ist das ja auch so, bis auf die Session oder?
      Zuletzt geändert von Basoom; 24.04.2015, 23:28.

      Kommentar


      • #4
        Zitat von Basoom Beitrag anzeigen
        Aber warum als $_GET Parameter? An $_GET finde ich eigentlich ziemlich gut, das man dann oben bspw. die id des Eintrages ziemlich einfach & direkt verändern kann aber wieso nicht einfach nur ein hidden field ohne $_GET oder eine Session oder ein Cookie?
        Es kommt immer darauf an, was erreicht werden soll. Ein GET-Parameter dient dazu um bestimmte Daten abzufragen. Ein GET-Parameter ist aber komplett falsch, wenn man dem Server Daten sendet, die er eh schon kennt. Es bringt nichts Daten vom Server zum Client und wieder zurück zu schicken. Du schreibst ja auch keinen Brief an jemand mit der Bitte, dass er den exakt gleichen Brief wieder zurückschickt, oder?

        Zitat von Basoom Beitrag anzeigen
        Das alle Daten prinzipiell überprüft werden sollten, ist mir schon klar aber bei dem "auf was" bin ich mir oft unsicher.
        Auf das, was für die Anwendung sinnvoll ist. Die Anwendung muss mit den Daten arbeiten können.

        Zitat von Basoom Beitrag anzeigen
        Naja, wenn ich den Titel im hidden field übergebe, dann kann dieser ja auch manipuliert werden.
        Dann frage ich dich: Warum lässt du dir den Titel vom Client schicken, wenn du ihn gar nicht brauchst? Nur aus Gaude?

        Zitat von Basoom Beitrag anzeigen
        Soweit ich weiß in so ziemlich alles und derzeit überprüfe ich nur, ob dieser ein String ist aber reicht das?
        Wenn dann irgendwie oben anstatt des Titels irgendwas anderes steht, wäre das ja schon irgendwie seltsam oder nicht?
        Ob die Logik deiner Anwendung sinnvoll ist, kann ich dir nich sagen, wenn ich sie nicht kenne.

        Zitat von Basoom Beitrag anzeigen
        Was meinst du damit? Da ist ja auch eines meiner Hauptprobleme. Bis jetzt habe ich da leider noch keine gute Übersicht gefunden.
        Cookies sind ja auch immer so eine Sache, weil diese kann man ja auch auf vielen Seite so direkt deaktivieren oder sogar löschen kann? Bei allen von mir genannten "Typen" ist das ja auch so, bis auf die Session oder?
        Cookies sind genauso unsicher wie Hidden-Felder oder GET-Parameter. Alles, was vom Client kommt, ist manipulierbar. Behandle sie deshalb auch so, ohne Ausnahme.

        Die Session enthält sitzungsbezogene Daten und sind vom Client nicht direkt manipulierbar.

        Kommentar


        • #5
          Nochmal kurz zur Entwirrung:

          HTTP-GET: Inhalte abfragen (gib mir Bild mit der ID 154, gib mir Seite mit der ID 984, such mir alle Seiten über Gänseblümchen, usw.)

          HTTP-POST: Inhalte an den Server schicken (User-Daten aktualisieren, Seiteninhalt aktualisieren, Dateien hochladen, usw.)

          Session: Sitzungsbezogene Daten. Werden nach Ablauf der Sitzung gelöscht. Werden am Server gespeichert und über die Anwendung bezogen.

          Cookie: Clientseitige Daten, die eine definiertes Ablaufdatum und eine maximale Lebenszeit haben. Werden zB. für permanente Logins verwendet (damit man sich nicht jedesmal auf einer Seite einloggen muss). Im Cookie wird ebenso die Session-ID gespeichert. Das Cookie wird bei jedem HTTP-Request vom Browser mitgesendet.

          Kommentar


          • #6
            Zitat von h3ll Beitrag anzeigen
            Dann frage ich dich: Warum lässt du dir den Titel vom Client schicken, wenn du ihn gar nicht brauchst? Nur aus Gaude?

            Ob die Logik deiner Anwendung sinnvoll ist, kann ich dir nich sagen, wenn ich sie nicht kenne.
            Wieso ich den Titel mit an die Seite der Kommentarbearbeitung schicke? Wenn ein Admin ein Kommentar eines Eintrages bearbeitet, dann will er ja evtl. noch einmal sehen, was er da genau bearbeitet. So aus Spaß oder dergleichen mache ich das nicht.

            Ich hatte auch überlegt, ob ich einfach nur die ID des Eintrages übertrage und dann den Rest mit einer Abfrage hole aber da stellt sich mir auch wieder die Frage, ob ich jezt die ID übertragen soll und dann den Titel und den Inhalt des Eintrages und vielleicht noch ein paar andere Daten mittels Query hole oder ob ich diese Sachen einfach mit einem hidden field übertrage.

            Zitat von h3ll Beitrag anzeigen
            Cookies sind genauso unsicher wie Hidden-Felder oder GET-Parameter. Alles, was vom Client kommt, ist manipulierbar. Behandle sie deshalb auch so, ohne Ausnahme.
            Ja, das meinte ich ja auch. Derzeit validiere ich ja auch schon alles, zumindest grundlegend. In wie weit man das ganze aber noch besser bzw. sicherer machen könnte ist mir nicht so ganz klar. Be einer ID ist das ganze ja relativ einfach aber wie das ganze bei einem String etc. ablauft stelle ich mir auch schon schwierige vor.

            Danke noch einmal für die kleine Erläuterung der einzelnen Sachen.
            Zuletzt geändert von Basoom; 25.04.2015, 01:52.

            Kommentar


            • #7
              Zitat von Basoom Beitrag anzeigen
              Wieso ich den Titel mit an die Seite der Kommentarbearbeitung schicke? Wenn ein Admin ein Kommentar eines Eintrages bearbeitet, dann will er ja evtl. noch einmal sehen, was er da genau bearbeitet. So aus Spaß oder dergleichen mache ich das nicht.
              Wenn ein Admin den Titel manipuliert, ist er aber selber schuld, oder?

              Zitat von Basoom Beitrag anzeigen
              Ich hatte auch überlegt, ob ich einfach nur die ID des Eintrages übertrage und dann den Rest mit einer Abfrage hole aber da stellt sich mir auch wieder die Frage, ob ich jezt die ID übertragen soll und dann den Titel und den Inhalt des Eintrages und vielleicht noch ein paar andere Daten mittels Query hole oder ob ich diese Sachen einfach mit einem hidden field übertrage.
              Nochmal: Wozu etwas zum Client schicken, nur um es wieder zurück geschickt zu bekommen?

              Zitat von Basoom Beitrag anzeigen
              Ja, das meinte ich ja auch. Derzeit validiere ich ja auch schon alles, zumindest grundlegend. In wie weit man das ganze aber noch besser bzw. sicherer machen könnte ist mir nicht so ganz klar. Be einer ID ist das ganze ja relativ einfach aber wie das ganze bei einem String etc. ablauft stelle ich mir auch schon schwierige vor.
              Was ist daran schwierig? Die Regeln legst ja du selber fest, wie der String auszusehen hat.

              Kommentar


              • #8
                ja, prinzipiell schon und wenn jemand unbefugtest zum Backend Zugang erhalten, spielt das eh keine große Rolle mehr oder?
                Aber ist es denn ratsam den Titel so mit in der URL zu schreiben oder lieber dann doch einfach nur die ID und dann mit einer SQL Abfrage den inhalt und den Titel des Eintrages holen?

                Zitat von h3ll Beitrag anzeigen
                Nochmal: Wozu etwas zum Client schicken, nur um es wieder zurück geschickt zu bekommen?

                Was ist daran schwierig? Die Regeln legst ja du selber fest, wie der String auszusehen hat.
                Was meinst du damit, etwas an den Client zu schicken, nur um es dann zurückgeschickt zu bekommen? Ich übertrage ja wenn ein Admin einen Eintrag bearbeiten will den Titel des Eintrages damit dieser auch weiß, welchen Eintrag er da grade bearbeit. Was wird da also zurückgeschickt?

                Zitat von h3ll Beitrag anzeigen
                Was ist daran schwierig? Die Regeln legst ja du selber fest, wie der String auszusehen hat.
                Prinzipiell hast du da Recht aber ich frage mich halt ob es reicht, wenn ich nur überprüfe ob es sich um einen String handelt, allerdings kann eine Überschrift ja auch mit einer Zahl enden, anfangen oder mittedrin sein also fällt mir da auch nichts weiteres ein. Ich wolte nur wissen, ob du oder jemand anderes da noch sinnvolle Kriterien vorzuschlagen hat.
                Zuletzt geändert von Basoom; 25.04.2015, 21:43.

                Kommentar


                • #9
                  Zitat von Basoom Beitrag anzeigen
                  ja, prinzipiell schon und wenn jemand unbefugtest zum Backend Zugang erhalten, spielt das eh keine große Rolle mehr oder?
                  Aber ist es denn ratsam den Titel so mit in der URL zu schreiben oder lieber dann doch einfach nur die ID und dann mit einer SQL Abfrage den inhalt und den Titel des Eintrages holen?
                  Wie gesagt, GET dient dazu um Inhalte zu holen und nicht zu senden. Wenns den Titel/ID, den der User holen möchte, nicht gibt, liefert die Anwendung eben eine 404-Fehlerseite.

                  Zitat von Basoom Beitrag anzeigen
                  Was meinst du damit, etwas an den Client zu schicken, nur um es dann zurückgeschickt zu bekommen? Ich übertrage ja wenn ein Admin einen Eintrag bearbeiten will den Titel des Eintrages damit dieser auch weiß, welchen Eintrag er da grade bearbeit. Was wird da also zurückgeschickt?
                  Das hat dann aber nichts mehr mit GET zu tun. Den GET geht nur vom Client zum Server. Wenn der Server was zum Client schickt, geht das über den HTTP-Response.

                  Zitat von Basoom Beitrag anzeigen
                  Prinzipiell hast du da Recht aber ich frage mich halt ob es reicht, wenn ich nur überprüfe ob es sich um einen String handelt, allerdings kann eine Überschrift ja auch mit einer Zahl enden, anfangen oder mittedrin sein also fällt mir da auch nichts weiteres ein. Ich wolte nur wissen, ob du oder jemand anderes da noch sinnvolle Kriterien vorzuschlagen hat.
                  Bei einer Überschrift fällt mir noch Längenbegrenzung ein. Willst du beliebig lange Überschriften erlauben? (mb_strlen())

                  Außerdem kanns auch nicht schaden das Encoding zu überprüfen: mb_check_encoding()

                  Kommentar


                  • #10
                    Achja stimmt ..
                    Da hat es grad einmal klickt gemacht. Mit $_GET werden die Daten natürlich nicht gesendet, sondern geholt. Ich übertrage das dann ja nur bei einem Link mit, also in Form von IP/Seite/?id=dieid&title=wasauchimmer
                    das ist aber dann ja so richtig oder?

                    Danke für die Tipps mit der Längenbegrenzung, habe ich ehrlich gesagt total vergessen.
                    Das mit der Kodierung ist auch eine gute Idee, danke für den Tipp!
                    Zuletzt geändert von Basoom; 26.04.2015, 18:57.

                    Kommentar

                    Lädt...
                    X