php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 24-04-2015, 20:43
Basoom
 Registrierter Benutzer
Links : Onlinestatus : Basoom ist offline
Registriert seit: Apr 2015
Beiträge: 8
Basoom befindet sich auf einem aufstrebenden Ast
Standard Variablen weitergeben | Validieren?

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?

Geändert von Basoom (25-04-2015 um 00:11 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 24-04-2015, 20:53
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
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:
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:
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:
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:
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.
Mit Zitat antworten
  #3 (permalink)  
Alt 25-04-2015, 00:21
Basoom
 Registrierter Benutzer
Links : Onlinestatus : Basoom ist offline
Registriert seit: Apr 2015
Beiträge: 8
Basoom befindet sich auf einem aufstrebenden Ast
Standard

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:
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:
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?

Geändert von Basoom (25-04-2015 um 00:28 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 25-04-2015, 00:48
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
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:
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:
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:
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:
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.
Mit Zitat antworten
  #5 (permalink)  
Alt 25-04-2015, 01:09
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

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.
Mit Zitat antworten
  #6 (permalink)  
Alt 25-04-2015, 02:44
Basoom
 Registrierter Benutzer
Links : Onlinestatus : Basoom ist offline
Registriert seit: Apr 2015
Beiträge: 8
Basoom befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
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:
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.

Geändert von Basoom (25-04-2015 um 02:52 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 25-04-2015, 09:39
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
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:
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:
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.
Mit Zitat antworten
  #8 (permalink)  
Alt 25-04-2015, 22:41
Basoom
 Registrierter Benutzer
Links : Onlinestatus : Basoom ist offline
Registriert seit: Apr 2015
Beiträge: 8
Basoom befindet sich auf einem aufstrebenden Ast
Standard

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:
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:
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.

Geändert von Basoom (25-04-2015 um 22:43 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 26-04-2015, 09:48
h3ll
 Registrierter Benutzer
Links : Onlinestatus : h3ll ist offline
Registriert seit: Mar 2008
Beiträge: 3.593
h3ll befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
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:
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:
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()
Mit Zitat antworten
  #10 (permalink)  
Alt 26-04-2015, 19:52
Basoom
 Registrierter Benutzer
Links : Onlinestatus : Basoom ist offline
Registriert seit: Apr 2015
Beiträge: 8
Basoom befindet sich auf einem aufstrebenden Ast
Standard

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!

Geändert von Basoom (26-04-2015 um 19:57 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Variablen weitergeben tullski25 PHP Developer Forum 11 03-08-2006 01:25
[Variablen] Textarea-Variablen immerwieder weitergeben kald PHP Developer Forum 8 07-07-2006 15:59
Variablen vollständig weitergeben smyl PHP Developer Forum 2 22-01-2004 00:33
Variablen an Flash weitergeben Goaliath ASP, PERL, CGI, C und alles andere 4 26-10-2002 13:40
variablen über link weitergeben ??? /newbie skati PHP Developer Forum 2 01-09-2002 15:48

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:37 Uhr.