AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [PHP/HTML] Best-Practice: Hidden-Felder ersetzen?
Thema durchsuchen
Ansicht
Themen-Optionen

[PHP/HTML] Best-Practice: Hidden-Felder ersetzen?

Ein Thema von Angel4585 · begonnen am 4. Sep 2013 · letzter Beitrag vom 4. Sep 2013
Antwort Antwort
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

[PHP/HTML] Best-Practice: Hidden-Felder ersetzen?

  Alt 4. Sep 2013, 09:09
Hallo!

Ich arbeite gerade mit PHP an einem Formular.
Es werden mehrere Zeilen ausgegeben und es gibt in jeder Zeile zwei Entscheidungsmöglichkeiten A und B.
Das ganze wird per POST an den Server geschickt.
Damit man weis welche Entscheidung getroffen wurde, wird die ID in ein hidden-Feld geschrieben und beim drücken auf einen der Button mitgeschickt.
Auf dem Server wird die ID natürlich nochmal validiert und verifiziert.

Ich bin jetzt kein PHP/HTML/JavaScript-Profi, aber das sieht für mich nicht schön aus.

Wie würdet Ihr so etwas lösen?
Kann man Hidden-Felder irgendwie ersetzen?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
WladiD

Registriert seit: 27. Jan 2006
Ort: Celle
135 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: [PHP/HTML] Best-Practice: Hidden-Felder ersetzen?

  Alt 4. Sep 2013, 09:46
Das ist gängige Praxis, irgendwelche IDs in Hidden-Feldern zu "verstecken". Eine weitere Möglichkeit ist, diese in die Action-URI als Get-Parameter zu packen:
Code:
<form action="FormProcessor.php?MyID=12345"...>
Waldemar Derr
Profil bei GitHub
  Mit Zitat antworten Zitat
Benutzerbild von fkerber
fkerber
(CodeLib-Manager)

Registriert seit: 9. Jul 2003
Ort: Ensdorf
6.723 Beiträge
 
Delphi XE Professional
 
#3

AW: [PHP/HTML] Best-Practice: Hidden-Felder ersetzen?

  Alt 4. Sep 2013, 10:10
Hi,

ich glaube, ich habe das Problem nicht ganz erfasst - die Radiobuttons haben doch selbst IDs etc.
Kannst du vielleicht mal einen Ausschnitt des Formulars zeigen?

Viele Grüße,
Frederic
Frederic Kerber
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#4

AW: [PHP/HTML] Best-Practice: Hidden-Felder ersetzen?

  Alt 4. Sep 2013, 10:15
Als Alternative ginge Javascript, darin ginge folgendes:

1. HTTP-Get-Aufruf unmittelbar zusammenbasteln (s. Antwort vn Wladi)

2. EIN verstecktes Feld, dessen Inhalt per Javascript gesetzt wird.

Je nachdem, wie Du das Treffen der Entscheidung realisiert hast, genügen auch einfach die normalen Formulardaten:

- zwei Buttons mit eindeutiger ID in jeder Zeile
- Checkbox in jeder Zeile

wenn Du das mal musterhaft darstellen könntest, kann man auch noch mehr Ideen entwickeln...

Gruß, Mikkey
  Mit Zitat antworten Zitat
Benutzerbild von Valle
Valle

Registriert seit: 26. Dez 2005
Ort: Karlsruhe
1.223 Beiträge
 
#5

AW: [PHP/HTML] Best-Practice: Hidden-Felder ersetzen?

  Alt 4. Sep 2013, 10:55
Als Alternative ginge Javascript, darin ginge folgendes
Also das ist leider noch viel, viel schlimmer als ein hidden Field.

Üblicherweise steckt die ID, die das Element, zu den du ein Formular absendest, in der URL. Normalerweise bastelt man sich in seiner Applikation auch schönere URLs, sodass es nicht mehr so nach PHP aussieht. Als Ziel-URL für das Formular wäre dann z.B. "/forum/user/42/edit" sinnvoll.

Falls das nicht geht oder zu umfangreich ist, sehe ich keinen speziellen Grund, auf ein Hidden Field zu verzichten. Du solltest dir allenfalls noch die Frage stellen, was in der URL stecken sollte und was nicht. User verschicken solche URL häufig. Eine URL wie "/forum/user/42", die dann den User anzeigt und ggf. bei entsprechenden Rechten auch das Formular, ist also gut.

Oft kommt es vor, dass die Menge an übertragenden Daten noch mehr steigt, zum Beispiel durch einen angemessenen CSRF-Schutz. Der Token der dabei mitgelifert werden muss, wäre für eine URL zu lang und vor allem auch gar nicht praktikabel. Gegen solche Felder spricht also eigentlich nichts.

Liebe Grüße,
Valenitn
Valentin Voigt
BOFH excuse #423: „It's not RFC-822 compliant.“
Mein total langweiliger Blog
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#6

AW: [PHP/HTML] Best-Practice: Hidden-Felder ersetzen?

  Alt 4. Sep 2013, 11:01
Ich merke gerade, das ich das recht blöd gelöst habe.
Ich habe keine Radio-Buttons (was aber die deutlich bessere Lösung ist) sondern zwei Submitbuttons und zwei separate Formulare.
Bei einem Formular mit zwei Radiobuttons stellt sich das Problem natürlich nicht erst. Weshalb es auch wohl die bessere Lösung ist, für die Fälle in der man eine Auswahl treffen soll welche der beiden Möglichkeiten man möchte.

Wie ist das in einer Liste mit nur einer Auswahl, wo man entscheidet ob man klickt oder nicht?
Ich hab ne Tabelle mit Herausforderungen für Freundschaftsspiele bei einem Spiel.
Die Tabelle listet eigene Herausforderungen an andere und gleichzeitig Herausforderungen anderer an mich, sortiert nach Datum, an dem die Freundschaftsspiele stattfinden würden.
Sowas:
Code:
<table>
<tr>
  <!-- Ich habe gefordert -->
  <td>Datum</td>
  <td>Heimmannschaft</td>
  <td>Ausw&auml;rtsmannschaft</td>
  <td>
    <form method='post'>
      <input type='hidden' name='id' value='1' />
      <input type='submit' name='withdraw' value='zur&uuml;ckziehen' />
    </form>
  </td>
</tr>
<tr>
  <!-- Ein anderer hat mich gefordert -->
  <td>Datum</td>
  <td>Heimmannschaft</td>
  <td>Ausw&auml;rtsmannschaft</td>
  <td>
    <form method='post'>
      <input type='hidden' name='id' value='2' />
      <input type='hidden' name='action' value='accept' />
      <input type='submit' value='annehmen' />
    </form>
    <form method='post'>
      <input type='hidden' name='id' value='2' />
      <input type='hidden' name='action' value='decline' />
      <input type='submit' value='ablehnen' />
    </form>
  </td>
</tr>
<tr>
  <!-- Variante mit Radiobuttons -->
  <td>Datum</td>
  <td>Heimmannschaft</td>
  <td>Ausw&auml;rtsmannschaft</td>
  <td>
    <form method='post'>
      <input type='hidden' name='id' value='2' />
      <input type='radio' name='action' value='accept' /> annehmen
      <input type='radio' name='action' value='decline' /> ablehnen
      <input type='submit' value='absenden' />
    </form>
  </td>
</tr>
</table>
Für mich ist das halt eher ein POST-Ereignis, als ein GET-Ereignis. POST und GET haben ja theoretisch auch ihre Bedeutung wie sie genutzt werden sollten.
Martin Weber
Ich bin ein Rüsselmops

Geändert von Angel4585 ( 4. Sep 2013 um 11:02 Uhr) Grund: Forumlare...
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

AW: [PHP/HTML] Best-Practice: Hidden-Felder ersetzen?

  Alt 4. Sep 2013, 11:11
Zwei Klicks (Radiobutton + Absenden) sind aber auch nicht so toll. Warum nicht ein Formular mit zwei submit-Buttons?
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#8

AW: [PHP/HTML] Best-Practice: Hidden-Felder ersetzen?

  Alt 4. Sep 2013, 13:27
Ich merke gerade, das ich das recht blöd gelöst habe.
Das sehe ich nicht unbedingt so. Es ist durchaus benutzerfreundlicher, wenn der Benutzer nicht erst einen Radiobutton und dann einen "Abschicken"-Knopf klicken muss.

Da aber das "Value"-Attribut des Submit-Buttons in den Post-Daten enthalten ist, kannst Du den von Dir benötigten Wert dahinein stellen. Dann ersparst Du Dir ein extra Hidden-Feld.

Eine Gestaltung, dass oben eine "Zurückziehen" Checkbox aktiviert wird und gleichzeitig keine oder eine Radioschaltfläche und mit einem einzigen Abschicken-Knopf das gesamte (eine) Form abgeschickt würde, antspräche eher einer "normalen" Website.

Da solltest Du entscheiden, welche Variante Dir besser gefällt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz