Archivlink: javarea.de Forum > (X)HTML & CSS (allgemein) > InputFeld in Formular deaktivieren
Vollständigen Link anzeigen: javarea.de Forum > (X)HTML & CSS (allgemein) > InputFeld in Formular deaktivieren

Pages: [1]

geschrieben von Sky@Walker am 22.07.2006 - 11:56
Hallo,

ich habe in einem Formular ein Inputfeld, was den Gesamtbetrag von verschiedenen Berechnung ausgibt. Ich möchte dass dieses Feld nicht bearbeitbar ist, aber ich kann es nicht auf disabled schalten, denn dann wird der berechnete Gesamtbetrag nicht mehr in die MySQL-Datenbank geschrieben.

Was muss ich also machen, dass man den Betrag nicht verändern kann, aber mit dem Feld aber immer noch Berechnungen anstellen kann?

geschrieben von Matneu am 22.07.2006 - 12:35
Zitat
 Original geschrieben von Sky@Walker am 22.07.2006 - 11:56
Was muss ich also machen, dass man den Betrag nicht verändern kann, aber mit dem Feld aber immer noch Berechnungen anstellen kann?

Das, was Du vorhast ist 1. nicht möglich und 2. ziemlich sinnlos.
Du willst 1. auf dem Client irgendwas berechnen lassen bzw. vom Client irgendeinen berechneten Wert übergeben lassen, worauf Du Dich verlassen willst (schliesslich willst Du es in die Datenbank schreiben), auf der anderen Seite willst Du aber den Text nicht editierbar machen?!?
ALLES, was vom Client berechnet wird ist editierbar. Selbst WENN das Feld auf disabled steht kann man es manipulieren. Entweder direkt per Browser-Extension, per nachgebautem Formular oder per Proxy (BurpSuite eignet sich zur Formularmanipulation ziemlich gut). Fazit: Lasse die Berechnung weiterhin auf dem Client laufen und zeige den Wert der Optik wegen disabled="disabled" an. Die Berechnung solltest Du allerdings auf dem Server erneut laufen lassen. Sollte mit OOP kein grosser Aufwand sein.
Als Notnagel, der aber von absoluter Programmieruntauglichkeit zeugt, kannst Du zusätzlich ein Hidden-Feld übergeben. Aber auch das kann der Client problemlos bearbeiten.
Man stelle sich einen Shop vor, wo der Kunde seinen Gesamtpreis selbst bestimmen kann... Der Shop hätte bestimmt geniale Klickraten ;)

So far...
Matthias

geschrieben von Danny am 22.07.2006 - 12:46
Das Attribut readonly setzt ein Inputfeld nur auf lesbar, wird aber meines Erachtens weiterhin übergeben.

Unter HTML sieht es dann so in der Art aus

HTML-Quelltext
1: 
<input type="text" name="test" value="1234" readonly>


Bzw. unter XHTML

HTML-Quelltext
1: 
<input type="text" name="test" value="1234" readonly="readonly" />



Bye Danny

geschrieben von Micha am 22.07.2006 - 13:05
Hallo,

es gilt aber weiter das, was Matthias bereits zu bedenken gegeben hat. Der Wert, der dort steht, kann manipuliert werden! Hierbei spielt es keine Rolle, ob es hidden, readonly, disabled ist.

Micha

geschrieben von Sky@Walker am 22.07.2006 - 13:10
@Danny,
danke sehr, das ist genau das, was ich gesucht habe!

@Matneu,
es geht - siehe Post von Danny - und ich finde es auch ganz sinnvoll.
Ich habe ein Anmeldescript geschrieben, wo die Teilnehmer anklicken können, wo sie schlafen wollen und ob sie Mittag/Abendessen und/oder Frühstück wollen, etc.
Im AdminTool, kann man jeden Datensatz bearbeiten. Also z.B. einstellen, dass der Teilnehmner im Nachhinein doch kein Frühstück will. Dann geht man in den datensatz, klickt Frühstück weg und der Gesamtbetrag wird via JS sofort neu berechnet und in das besagte Input-Feld geschrieben. Dieser Gesamtbetrag wird beim Abschicken des Datensatzes in die DB geschrieben.
Warum soll ich das auf der Serverseite nochmals berechnen? Da ich clientseitig mit JS arbeite und serverseitig mit PHP wirds - IMO - auch mit OOP schwierig.

disabled="disabled" kann ich nicht verwenden, da dann JS den Value des Feldes nicht mehr an das PHP-Script übergibt, und das ist ja zwingend notwendig. Wenn ich daraus ein Textfeld mache, funktioniert die automatische Berechnung nicht mehr.
Deswegen ist IMO die Lösung von Danny mit readonly="readonly" korrekt.

Wenn ich falsch liege, dann berichtigt mich bitte.

@derletztekick
das es ein AdminTool ist, gehe ich davon aus, dass keiner einen Sinn darin sieht, das Formular zu manipulieren ;)
Aber wenn das stimmt, was Mathneu sagt, dann dürfte man ja gar keine Formulare mehr verwenden, da ich dann bei jedem Shop die Werte verändern könnte. Frage mich, bei was so eine Manipulation sinn macht.

geschrieben von Matneu am 22.07.2006 - 13:17
Zitat
 Original geschrieben von Sky@Walker am 22.07.2006 - 13:10
Wenn ich falsch liege, dann berichtigt mich bitte.

@derletztekick
das es ein AdminTool ist, gehe ich davon aus, dass keiner einen Sinn darin sieht, das Formular zu manipulieren ;)
Aber wenn das stimmt, was Mathneu sagt, dann dürfte man ja gar keine Formulare mehr verwenden, da ich dann bei jedem Shop die Werte verändern könnte. Frage mich, bei was so eine Manipulation sinn macht.

Gute Shops sind so aufgebaut, dass lediglich die Anzahl und eine eindeutige Artikel-ID übergeben werden. Vielleicht noch sowas wie Farbe/Grösse etc. Kein Preis, nichts. Denn das steht ja in der Datenbank, das muss der Server nicht erst vom Client abfragen.

Mit OOP könntest Du sehr einfach die Gesamtsumme einer Bestellung / Reservierung ausrechnen, das meinte ich mit OOP.

Klar geht es so, wie Du es machen willst. Fakt bleibt allerdings, dass das Formular 1. manipuliert werden kann, auch wenn man dazu vielleicht Admin-Rechte braucht und es zweitens einfach schlechtes Design ist. Wenn Du später damit Geld verdienen willst würde ich schnellstens von solchem Programmierstil weggehen!

So far...
Matthias

geschrieben von Micha am 22.07.2006 - 13:26
Hallo,

Zitat
 Original geschrieben von Sky@Walker am 22.07.2006 - 13:10
das es ein AdminTool ist, gehe ich davon aus, dass keiner einen Sinn darin sieht, das Formular zu manipulieren ;)


Dieses wichtige Detail hattest Du leider nicht erwähnt. ;)

Micha

geschrieben von Sky@Walker am 22.07.2006 - 14:28
Zitat
 Original geschrieben von Matneu am 22.07.2006 - 13:17
Gute Shops sind so aufgebaut, dass lediglich die Anzahl und eine eindeutige Artikel-ID übergeben werden. Vielleicht noch sowas wie Farbe/Grösse etc. Kein Preis, nichts. Denn das steht ja in der Datenbank, das muss der Server nicht erst vom Client abfragen.
Hmm, du hast wohl Recht.
Das ist ein Projekt was schnell gemacht werden musste, deswegen stehen die Werte nicht in der Datenbank sondern direkt im JS (bitte nicht schlagen ;) )
Ich brauche die Werte aber im JS, weil der User direkt eine LiveZusammenstellung darüber erhält, was er bezahlen muss. Also wenn er Essen und Unterkunft gewählt hat, wird auf der gleichen Seite automatisch die Berechnung angezeigt.

Wenn ihr wollt könnt ihr euch das mal anschauen, unter http://www.forum-altoetting.de/anm/....e_test.php
Bin für Verbesserungsvorschläge sehr offen!

Zitat
 Original geschrieben von derletztekick
Dieses wichtige Detail hattest Du leider nicht erwähnt. ;)
Ups, ja das stimmt

geschrieben von misterx3387 am 22.07.2006 - 17:48
Zitat
 Original geschrieben von Sky@Walker am 22.07.2006 - 14:28
Bin für Verbesserungsvorschläge sehr offen!


Wenn man auf "Formular leeren" drückt, dann wird wird der Gesamtpreis nicht zurück gesetzt.

geschrieben von Matneu am 23.07.2006 - 17:30
Zitat
 Original geschrieben von Sky@Walker am 22.07.2006 - 14:28
Ich brauche die Werte aber im JS, weil der User direkt eine LiveZusammenstellung darüber erhält, was er bezahlen muss. Also wenn er Essen und Unterkunft gewählt hat, wird auf der gleichen Seite automatisch die Berechnung angezeigt.

Dagegen spricht ja auch nichts, im Gegenteil, bei aktiviertem Javascript erhält der User gleich eine Rückmeldung. Das einzige, was ich bemängel ist eben, dass Du dem Client die Rechnerei überlässt und dem Client vertraust, dass er Dir das richtige zusammenrechnet und dieses richtig-berechnete Ergebnis Dir auch gewissenhaft ehrlich und nicht manipuliert übermittelt.
Der Client (besser dessen Nutzer) kreuzt doch an, was er kaufen / mieten möchte. Dafür musst Du ja die Preise in der Datenbank haben. Der Client schickt ab, Du empfängst, berechnest die Summe und gibst sie dem Client wieder zurück.
Du solltest doch sowieso eine Fallback-Methode haben für diejenigen, die Javascript deaktiviert haben. Sowas gehört einfach zu einer guten Webseite. und dann musst Du das ganze eben auch auf dem Server berechnen.

So far...
Matthias

geschrieben von Sky@Walker am 23.07.2006 - 20:55
Hmm, ja du hast Recht. Okay, dann werde ich das Formular wohl nochmal überarbeiten. Danke für deine Ratschläge!

Gruß Marcel


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.