| | | | |
| |||||||
| Tutorials Hier findest Du Tutorials, welche nach und nach ein fertiges Script ergeben. Sehen, lernen & verstehen! |
|
| | LinkBack | Themen-Optionen | Thema bewerten |
| | |
| PHP Code Flüsterer Registriert seit: 21.08.2005 Beiträge: 4682 PHP-Kenntnisse: Fortgeschritten | |
| | |
| Moderator Registriert seit: 11.05.2008
Beiträge: 6.069
![]() ![]() ![]() ![]() ![]() ![]() ![]() | Ich muss wieder widersprechen, XSS-Filterung ist nicht die Aufgabe der Daten-Klasse, sondern des Views oder der Entsprechung für das Ausgabemedium. Default-Angaben müssten wahrscheinlich genauso wie die ValidateFilter gesetzt werden.
__________________ "Nuschel ich?" - "Was?" |
| | |
| | |
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 34.256
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Ich meine nicht htmlspecialchars oder dergl. Sondern eher eine Art Intrusion detection. 10k Zeichen in einem Namensfeld, <script> in einem Altersfeld, Arrays aus einer Inputangabe. Das sind Sachen, die kann man im Vorfeld aussieben und muß sie nicht mal raw ins Objekt schreiben. Klar, man kann sie auch im Vorfeld als Manipulationsversuch komplett ablehnen. Langsam überlege ich, ob es nicht doch besser ist, für einen Formularinput ein extra Objekt zu führen. Schließlich kann ein Forminput ja theoretisch durchaus auch mehrere Domainobjekte bedienen. Bleibt dann aber die Frage, wohin die Validierung gehört.
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- |
| | |
| | |||
| Moderator Registriert seit: 11.05.2008
Beiträge: 6.069
![]() ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
Zitat:
PHP-Code:
__________________ "Nuschel ich?" - "Was?" Geändert von Chriz (14.09.2009 um 19:16 Uhr). | ||
| | |
| | ||
| Erfahrener Benutzer Registriert seit: 28.08.2009
Beiträge: 233
PHP-Kenntnisse: Anfänger ![]() | Zitat:
Ok, dann weitere Beispiele, die mir so spontan einfallen: Float: Punkt oder Komma als Dezimaltrennzeichen BOOLEAN: 0/1 aber auch true/false NULL: PHP-NULL (null), MySQL-NULL ('NULL'), XML-NULL(null="true" und Leerstring?) Mir schwebte mal eine Konverter-Klasse vor, die die Datentypen auf ein festgelegtes einheitliches Referenz-Format konvertiert und jeweils Regeln zur Umwandlung von Quell- auf Ziel-Format besitzt. Intern wird dann immer zuerst auf das Referenz-Format konvertiert umd die Regelmengen klein halten zu können. Ok, das ist jetzt vielleicht sehr speziell, ich benötige soetwas aber öfter für den Im-/Export für (CSV, EXCEL, MySQL, XML). | |
| | |
| | ||
| moderatives Dielektrikum Registriert seit: 21.05.2008
Beiträge: 34.256
PHP-Kenntnisse: Fortgeschritten ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
PHP-Code:
__________________ -- One pixel is still too big. Please make it smaller. ASAP. Initiative Mittelstand. Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers. -- | |
| | |
| | |
| Moderator Registriert seit: 11.05.2008
Beiträge: 6.069
![]() ![]() ![]() ![]() ![]() ![]() ![]() | @Steve: Also wie gesagt, im Daten-Objekt sollten die Daten normiert vorliegen, bei Fließkommawerten also als PHP-float/double, bei boolschen Werten eben als PHP-bool und bei NULL eben auch NULL. Ich denke da sind wir uns einig, denn nur so kann ich sie auch wieder einfach in alle anderen Formate exportieren, ohne für jede Kombination Import/Export-Konverter schreiben zu müssen. Der Punkt denn du anführst, dass die Datenquelle sich natürlich unterscheiden kann/wird/darf ist richtig. Mein Vorschlag von vorhin, die ValidateFilter auf public zu setzen ist dagegen doch kein so guter. Ich möchte nicht, dass es möglich ist im Nicknamen DateTime-Objekte unterzubringen oder im Geburtsdatum plötzlich Unix-Zeitstempel zu jonglieren. Das muss fest sein. Andernfalls ist mein User-Objekt nicht mehr verlässlich, sonst könnte ich aus dem User-Objekt auch ein News-Objekt on-the-fly machen, wenn ich lustig bin. Die Daten-Klasse kann darum die Informationen darüber, ob ein Excel-Feld leer ist und deshalb einen md5(null) (erfunden) zurückliefert, nicht kennen, sie kann nicht wissen dass INI "on"/"off" als boolsche Werte betrachtet oder in der Custom-CSV-Datei "no" und "nein" das selbe sind. Wer das weiß, ist die Datenquelle (bei mir der Manager - Kapitel 3 Es ist aber wahr, dass dadurch eine dreifache Validierung/Filterung stattfinden könnte: Import -> Daten-Klasse -> Export. Formular-Klasse muss deutsches Datum in universelles String-Format bringen, Daten-Klasse muss universelles String-Format in DateTime-Objekt drücken Datenbank-Klasse muss DateTime in Unix-Zeitstempel umwandeln Aber es ist doch trotzdem sauber und gerechtfertigt zwischen Import und Export einen Vermittler einzusetzen, der die ganzen Daten erstmal normiert speichert. So weiß Import und Export jeweils was zu tun ist, ohne sich gegenseitig kennen zu müssen. So kann ich ein User-Objekt aus der Session genauso behandeln wie den Admin aus dem festen Konfig-File (damit er nicht gelöscht werden kann) und die übrigen User aus der Datenbank. Und zwar garantiert gleich, denn sonst würde die Daten-Klasse ja vorher moppern
__________________ "Nuschel ich?" - "Was?" Geändert von Chriz (14.09.2009 um 20:37 Uhr). |
| | |
| | |
| Erfahrener Benutzer Registriert seit: 28.08.2009
Beiträge: 233
PHP-Kenntnisse: Anfänger ![]() | Hi Chriz, danke für deine detaillierten Ausführungen. Ich merke, da hat jemand in etwa die selben Anforderungen/Problematiken für den Datenaustausch erkannt Ich denke also, wir sind uns 100%-ig einig. Als Referenz-Datentyp (Normierung) den PHP-Datentyp zu benutzen ist nur konsequent. Eventuell würde ich bei der DateTime-Klasse schon auf ein festes Format bestehen. Ok, dann habe ich hier vielleicht schon etwas vorweggegriffen, worauf du im "Manager - Kapitel 3" erst eingehen wolltest. Klingt interessant - ich bin gespannt. |
| | |
| | ||
| Moderator Registriert seit: 11.05.2008
Beiträge: 6.069
![]() ![]() ![]() ![]() ![]() ![]() ![]() | Zitat:
Danke dir auf jeden Fall fürs Beteiligen hier im Thread. Ich hoffe ich kam nicht stur rüber, war lediglich in einigen Bereichen von meiner Meinung überzeugt. Ist ja wie gesagt nur eine Idee oder ein Ansatz und keine Best-Practice. Da gibts andere die das von ihren Ideen behaupten dürfen.
__________________ "Nuschel ich?" - "Was?" | |
| | |
|
| Themen-Optionen | |
| Thema bewerten | |
|
|
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Registrierte User sollen ihre Daten ändern können | 54ch4 | PHP Tipps 2009 | 17 | 14.03.2009 14:29 |
| Mehrere Arrays unterschiedlicher Größe kombinieren | querfisch | PHP Tipps 2007 | 9 | 31.03.2007 21:34 |
| Session Frage - gleiches Formular 2 mal alle Daten behalten | NetLook | PHP Tipps 2007 | 1 | 21.11.2005 18:42 |
| PHP-GTK Tutorial | Beitragsarchiv | 9 | 02.11.2005 21:07 | |
| [Erledigt] sql daten für einen kunden auslesen/ändern im Formular | PHP Tipps 2005-2 | 3 | 12.10.2005 08:36 | |
| [Erledigt] Daten auslesen und ändern | Datenbanken | 2 | 17.09.2005 19:28 | |
| Daten eintragen und auslesen | Rettungsdackel | Datenbanken | 0 | 14.09.2005 16:29 |
| Daten in Datenbank ändern | PHP Tipps 2005 | 3 | 27.01.2005 14:40 | |
| array_push nur in begrenzter Anzahl ausführen ? | PHP Tipps 2004 | 2 | 07.09.2004 09:05 | |
| Besucher kamen über folgende Suchanfragen bei Google auf diese Seite |
| php anregungen, php csv mapping, javascript php or mapping, php db maping, php universelles datenobjekt, or mapping, best or mapper php, datenbank csv witzig beispiel, or mapper schreiben, or mapper php tutorial, warum or mapping, or mapping auf einer seite, best or mapper für php, php mehrere werte in ein objekt schreiben, php datenobjekte, objekt behalten php, datenobjekte in excel erstellen, mysql or mapping, dateiaobjekte langsam markieren, datenobjekte validierung software design |