Wertübergabe mit Post

orkmork

Grünschnabel
Hi.
Ich hab folgenden Code:
Code:
<?
print_r($_POST);
?>
<form action="<?echo $PHP_SELF;?>" method='post'>
<table width="300" border="0" cellspacing="1" cellpadding="1">
  <tr>
    <td><input type=image name="Wahl[1]" src="test.gif"></td>
    <td><input type=image name="Wahl[2]" src="test.gif"></td>
    <td><input type=image name="Wahl[3]" src="test.gif"></td>
  </tr>
</table>
</form>

Bisher habe ich die Auswahl immer mit
Code:
$entscheidung = @key($Wahl);
ausgewertet, welches der drei Bilder gewählt worden ist.

Nun lautet meine Frage,ob es mit PHP irgendwie möglich ist, solche Werte per POST zu übergeben, sodass
  • der werder Var-Name noch Wert im endgültigen HTML-Code ersichtlich ist
  • die Var und Wert nicht in der URL ersichtlich sind (wäre ja GET)
  • keine hiddenfields verwendet werden (was sich aus ersten Punkt erschließt)
Da PHP-Scripte schneller ablaufen als JS ist JS nicht wirklich eine Sinnvolle Lösung. JS-Code ja wieder ersichtlich.
Kann ich vielleicht ein Objekt erstellen, dass mir dies ermöglicht?
Oder vielleicht mit einer Klasse hantieren?

Bitte um Hilfe ...
OrkMork
 
nungut ...

Jetzt mal angenommen, die Seite Zeigt nicht auf sich selbst sondern auf eine nächste.
Beispiel 1.Seite:
Code:
<?
?>
<form action="bestaetigen.php" method='post'>
<table width="300" border="0" cellspacing="1" cellpadding="1">
  <tr>
    <td><input type=image name="Wahl[1]" src="test.gif"></td>
    <td><input type=image name="Wahl[2]" src="test.gif"></td>
    <td><input type=image name="Wahl[3]" src="test.gif"></td>
  </tr>
</table>
</form>
2.Seite
Code:
$entscheidung = @key($Wahl);
echo '<form action="abschluss.php?ent='.$entscheidung.' method="post">';
echo 'Sind sie sicher, das sie Feld '.$entscheidung.' w&auml;hlen wollen?';
echo '<input type="submit" name="ok" value="Klar">';
echo '<input type="submit" name="cancel" value="Nein">';
echo '</form>';
?>
Die Person hat Feld 1 geklickt.
In abschluss.php wird der Wert dann in die DB geschrieben.
Allerdings könnte jetzt der User Wahl eins getroffen haben, sich mit HTMLsniffing auskennt dann durch manuelles eingeben in der URL per Aufruf
http://xxxxxxx/abschluss.php?ent=3&ok="Klar"
diese seine entscheidung Manipulieren. Daher wieder meine Frage. Wie kann ich soetwas verhindern und sichergehen, das wenn der User Wahl1 getroffen hat, dass dann auch Wahl1 in der DB steht auf der letzten Seite.

OrkMork
 
Prinzipiell erst mal register_globals ausschalten bzw. die per POST übergebenen Daten auch über das Array $_POST ansprechen. Und dann solltest du die Daten aus dem ersten Formular in einer Session-Variable speichern, und nicht über die URL vom 2. Formular an die 3. Seite weitergeben. Dann kann der User im 2. Formular auch nur das bestätigen, was er im 1. Formular eingegeben hat.

Außerdem solltest du die Werte, die du über POST bekommst auch überprüfen.
 
Okay. Danke erstmal .... werd ich wohl ne Hardcore-Test-Umgebung schreiben müssen, da ich ein eigenes Sessionsystem verwende. *seufz* Wird schon irgendwie passen ;)
 
Zurück