fabian: Variable übergeben je nach ausgewähltem Link

Hallo Forum,

ich schlage mich schon seit einiger Zeit mit einem Problem herum.

Ich habe eine Tabelle mit PHP generiert, die Links mit unterschiedlichen  Variable enthält die dann der gelinkten Seite übergeben werden.
Die Tabelle baut sich User spezifisch auf.

Anhand dieser Variable werden dann bestimmte Informationen auf der gelinkten Seite gezeigt.

Übergebe ich die Variablen jedoch per URL Anhang, kann dieser ohne weiteres manipuliert werden.

Dann habe ich ein hidden Field in einem Formular ausprobiert. Per Post sollte die Variable übergeben werden, er zeigt aber immer eine Leerzeile an, die ich nicht wegbekomme.

in PHP:
<form action="ordnerverwaltung.php" method="post"><input type="hidden" name="ordner_id" value="$ordner_id"> <input type="image" src="ordner.jpg" value="submit">
</form>

geparst:
<form action="ordnerverwaltung.php"method="post"><input type="hidden" name="PHPSESSID" value="6f5b7561aa451ad2b80cbb2d46ad7231" /><input type="hidden"name="ordner_id"value="1"><input type="image"src="ordner.jpg?PHPSESSID=6f5b7561aa451ad2b80cbb2d47ad7231"value="submit"></form>

Wie kann ich die Leerzeile wegbekommen?

Oder gibt es eine weitere Möglichkeit, die Variablen per Session oder so zu übergeben.

Für eine Antwort wäre ich sehr sehr dankbar.

Grüße Fabian

  1. Hi,

    Übergebe ich die Variablen jedoch per URL Anhang, kann dieser ohne weiteres manipuliert werden.

    und Du meinst, bei einem POST-Formular sei dies nicht mehr möglich?

    Wie kann ich die Leerzeile wegbekommen?

    Such im Archiv danach. Es hat nichts mit PHP oder Variablenübergabe zu tun, sondern liegt schlicht und ergreifend am Formular, und kann mittels CSS mehr oder minder gut behoben werden.

    Cheatah

    1. Danke für die Antworten,

      wenn das Problem an HTML liegen sollte, werde ich dazu nochmal etwas suchen.

      Ich dachte PHP würde falsch parsen...

      Grüße Fabian

      1. Hi,

        Ich dachte PHP würde falsch parsen...

        aus diesem Grund solltest Du vor allem auch immer den Quellcode der _Ausgabe_ analysieren; denn dieser enthält nicht mehr die Spur von PHP.

        Cheatah

  2. Hi Fabian!

    Wie kann ich die Leerzeile wegbekommen?

    Dein Problem hat weniger mit PHP zu tun. Unter Formulare werden immer Leerzeilen gesetzt (zumindest im IE). Und soweit ich weiß gibt es kein Mittel dagegen.

    Oder gibt es eine weitere Möglichkeit, die Variablen per Session oder so zu übergeben.

    Sessions funktionieren auch nicht anders: die Session-ID wird per URL-Parameter/Hidden-Field/Cookie übertragen. Aber trotzdem muss ja irgendwie die ordner_id rüberkommen. Also wäre Dir damit nicht geholfen.

    VG Simon

  3. Moin

    Übergebe ich die Variablen jedoch per URL Anhang, kann dieser ohne weiteres manipuliert werden.

    Das ist auch mit hiddenfeldern problemlos möglich.
    Deine Alternativen:
    1. (bevorzugt) baue deine Applikation so, dass ein Verändern der Parameter keine (schädlichen) Konsequenzen hat. Merke: _Alles_ was du dem User übergibst und dieser zurücksendet kann er problemlos manipulieren.
    2. Wenn du sowieso schon Sessions verwendest, speichere die vom User im Moment möglicherweise ausführbaren Aktionen in der Session und validiere das beim nächsten Seitenaufruf. Evt. willst du auch jeder Aktion einen (zufälligen) String zuordnen, diese Zuordnung zusammen mit den zur Aktion gehörigen Parametern in der Session speichern und dann in den Links nur noch diesen Aktionsstring anhängen. Beispiel skript.php?aktion=lkdsa3yl2hv, wobei dein Skript dann mit Hilfe der Session weiss, dass es bei lkdsa3yl2hv in $aktion das machen soll, was es sonst bei $ordner_id = 1 gemacht hat.
    3. (Alternative ohne Sessions, nur der Vollständigkeit halber) Sende zusätzlich zu den Parameter noch eine Checksumme über die Parameter und einen geheimen String. Beispiel: Definiere bei dir im Skript irgendwo einen String $geheimnis, belege ihn mit einem geheimen, zufälligen Wert und sieh zu dass der User den String nicht manipulieren oder einsehen kann. Dann verkette alle Parameter die der User übergeben darf zusammen mit dem $geheimnis und mach ein MD5() drauf. Hänge diese Checksumme an den Link an, z.B für ($geheimnis = "hallo;"; hash=md5($geheimnis."ordner_id=".$ordner_id); ) wäre das skript.php?ordner_id=1&hash=cbd1ab45354ad9e7129efc8c66ad7c70. Wenn dein Skript aufgerufen wird, macht es die selbe Aktion wieder - md5($geheimnis."ordner_id=".$ordner_id) - und schaut nach ob da das gleiche Ergebnis rauskommt wie im $hash steht. (Merkt man eigentlich dass ich MD5 mag? :)

    --
    Henryk Plötz
    Grüße aus Berlin

    1. Moin Henryk,

      vielen Dank für Deine ausführliche Antwort. Generell arbeite ich mit mehreren Parameter Übergaben. Ich habe deine Antwort daher ausgedruckt und werde Sie nach und nach analysieren und meine Seite ggf. umstellen müssen.

      Vielen Dank!

      Grüße nach Berlin
      Fabian