$_REQUEST unset setzen

psykochris

Mitglied
Hi@all,
folgendes Problem:

Code:
if(isset($_REQUEST['del']))
{
	$del = $_REQUEST['del'];

	$sql_del = "DELETE FROM `filme` WHERE `Filmtitel` = '$del';";
	$result_del = mysql_query($sql_del);
	
	echo "<b>\"".$del."\" erfolgreich gelöscht...</b>";
}

Wie im Code zu sehen, überprüfe ich mit isset ob die Variable $_REQUEST['del'] gesetzt ist. Ist dies der Fall wird ein Eintrag aus der DB gelöscht und eine Info ausgegeben, dass das löschen erfolgreich war.
Aktualisiert man jetzt aber die Seite mit F5 oder indem man im Formular einen anderen Eintrag sucht wird wieder die Info ausgegeben obwohl ja nichts gelöscht wurde - da die $_REQUEST-Variable immer noch gesetzt ist.
Wie kann ich das verhindern bzw. die Variable 'unset' setzten.

Mit 'unset' funktioniert es nicht.

Danke.
 
Zuletzt bearbeitet:
Hallo,

1. Der Code ist unsicher, offen für sogenannte "SQL-Injections". Man sollte niemals Daten aus dem Request, also usermanipuliere Daten, einfach so in einen Query übernehmen. Man sollte sie vorher durch entsprechende Escape-Funktionen jagen, im Falle von MySQL bietet sich da mysql_real_escape_string an.

2. Die Request-Daten werden natürlich immer wieder neu mitgeliefert, sobald man F5 drückt, da ja exakt der gleiche HTTP-Request gesendet wird.

3. unset($_REQUEST['index']) und $_REQUEST = null; müssten gehen.
 
Es bringt auch nichts die Variable zu unsetten, da sie wie gesagt mit jeder Anfrage (F5 oder Formular neu abschicken) sowieso neu gesetzt wird. Du könntest zum Beispiel überprüfen ob überhaupt was gelöscht wurde (mysql_affected_rows) und nur dann die Meldung ausgeben. Oder du leitest den Benutzer per Hand auf eine andere Seite weiter. Oder du verhinderst per Session einen Reload der Seite für den selben Benutzer. Oder du überprüfst ob überhaupt etwas zu löschen ist. Gibt schon eine Menge Möglichkeiten ;-)

Nur zum Verständnis: $_REQUEST baut sich jedesmal automatisch neu auf, sobald du mit deinem Browser die Anfrage startest oder aktualisierst. Du kannst aus PHP heraus gar nicht die Variable löschen, da sie vom Client kommt. Du kannst sie höchstens innerhalb des Seitenaufrufs außer Gefecht setzen (eben mit unset etc.), aber eben nicht global für alle Requests.
 
Zurück