reload unterbinden

Cemil

Erfahrenes Mitglied
Hallo,

habe ein Formular erstellt, indem man Bestellungen entgegennehmen kann. Desweiteren hat der Benutzer 2 Optionen zur Auswahl:

Der Benutzer kann sich die Rechnung nach Hause zuschicken oder auf der Webseite anzeigen und ausdrucken lassen.

Mein Problem:

Während der Kunde seine Rechnung anzeigen und ausdrucken lässt, werden mit grösster wahrscheinlichkeit andere Bestellungen in die DB eingetragen und ich möchte vermeiden, das nach einem reload der letzte Datensatz angezeigt wird.

Habe recherchiert und herausgefunden, das für solche Fälle Sessions oder die Variable $_SERVER['HTTP_REFERER'] in Frage kommen könnten. Auf php.net habe ich gelesen, das aus Sicherheitsgründen die Variable $_SERVER['HTTP_REFERER'] nicht empfohlen wird, also bleiben nur noch die Sessions (korrigiert mich bitte, falls ich falsch liege).

Mir fehlt einfach der Ansatz, da ich bis heute nichts damit zutun hatte. Hat irgendjemand einen Vorschlag?
 
Warum speicherst du nicht in einer Session die ID des Datensatzes, welcher zu dem betreffenden User gehört... dann kannst du sicher auf diesen zugreifen.?
 
Hallo Sven,

vielen Dank für Deine Antwort.

Auf php.net schaue ich mir gerade die Sessions an und werde versuchen, mit Deinem Ansatz im Hinterkopf, eine Lösung fertigzubringen. Falls ich nicht weiterkommen sollte, würde ich auf jedenfall wieder schreiben.

Ciao
 
Schau dir, wenn du schonmal dort bist, am Besten auch [phpf]mysql_insert_id[/phpf] an.
Das liefert nach einem INSERT die ID des betroffenen Datensatzes...was dir dabei sehr hilfreich sein dürfte ;)
 
Du kannst dir mal das Tutorial anschauen: klick mich

Ist zwar ein Userlogin-Tut, aber da sollltest du recht schnell verstehen, wie das mit den Sessions geht.
 
Hallo,

sorry MiNiMaG, das ich Dir erst jetzt antworte, aber ich sitze erst seit ca. 1 Std. wieder am PC und bin mit dem ganzen erst jetzt fertig geworden. Habe mir das ganze mal in Ruhe angeschaut und habe danach eine Session-ID über GET/POST weitergegeben. Für diejenigen, die Null-Ahnung von Sessions über GET/POST haben (wie ich vor kurzem ;) ), hier noch eine kurze Erläuterung für die Nachwelt:

Wenn vom Client keine Cookies zugelassen werden, muss das ganze unter Verwendung der HTTP-Methode GET oder POST bzw. über entsprechende Links oder die header()-Funktion auf die jeweils nächste Seite übertragen werden.

Hier mein Beispiel:

start.php
PHP:
session_start();
$_SESSION["id"] = $id;
session_start();
$_SESSION["id"] = $id;
	echo '<br /><a href="ausgabe.php?' . SID . '">Hier kommt die Ausgabe:</a>';
	echo "<br />Session-ID: " . SID;

ausgabe.php
PHP:
session_start();
echo $_SESSION["id"];
if($_SESSION["id"] <= $DBrows) {
	echo "Vielen Dank für Ihre Bestellungen.";
	exit();
} else {
session_unset();
bla bla bla

Sessions und Sicherheit
Das Session-Modul bietet keine Garantie dafür, dass Informationen, die Sie in einer Session speichern, nur vom Benutzer gesehen werden können, der die Session erzeugt hat. Sie müssen zusätzliche Maßnahmen ergreifen, um die Integrität der Session ihrer Wichtigkeit entsprechend angemessen aktiv zu schützen.

Schätzen Sie die Wichtigkeit der Daten ab, die in Ihren Sessions transportiert werden und treffen Sie zusätzliche Schutzmaßnahmen -- in der Regel bezahlen Sie dafür mit einer geringeren Benutzerfreundlichkeit. Wenn Sie z.B. Benutzer vor einfachen Social Engineering Tactics (Anm. des Übersetzers: Techniken der Ausnutzung menschlicher Schwächen) schützen wollen, müssen Sie session.use_only_cookies aktivieren. Cookies müssen dann benutzerseitig auf jeden Fall aktiviert sein, weil Sessions sonst nicht funktionieren.

Es gibt mehrere Wege, über die eine Sessio-ID an Dritte gelangen kann. Eine entführte Session-ID ermöglicht diesen, auf alle Daten zuzugreifen, die mit dieser Session-ID verbunden sind. Erstens sind das URLs, die Session-IDs enthalten. Wenn Sie auf eine externe Site verweisen, könnte die URL inklusive Session-ID in den Referrer-Logs der externen Site gespeichert werden. Zweitens kann ein aktiverer Angreifer Ihren Netzwerkverkehr abhören. Falls Ihr Netzwerkverkehr nicht verschlüsselt ist, werden Session-IDs im Klartext über das Netzwerk übertragen. Hier ist die Lösung, auf Ihrem Server SSL zu implementieren und die Verwendung für Ihre Benutzer obligatorisch zu machen.

Für weitere Informationen siehe: http://www.php.net/manual/de/ref.session.php

Ciao und nochmals vielen Dank für eure Bemühungen.
 
Zuletzt bearbeitet:
Zurück