F5 (Reload) umgehen via header()

aargau

Erfahrenes Mitglied
Ich stehe derzeit vor einem kleinem Problem.
Damit Einträge wie Forum / Kommentare / Uploads nicht versehentlich durch F5 mehrfach Hochgeladen werden, möchte ich dagegen was machen. Meine Idee wäre in den Funktionen welche Einträge in die DB Schreiben / Daten Hochladen am Schluss anstelle von return "Die Datei wurde Hochgeladen" via header den User umzuleiten.
Ich weis allerdings ob dies Server Last mässig die beste Lösung ist oder ob es da noch andere, bessere gibt.

Momentan sieht das z.B. so aus:

function.php (jeweils zuoberst eingebunden)
PHP:
<?php
/Funktion filemanager
function filemanager()
{
	if($_POST['www1'] && $_POST['www1']=="hid1"){
... Script ...

header("Location: index.php?show=member&size=".round($f_usersize/"1024",2)."&name=".$f_name);
}
} else { 
return fehler("Fehler! Es wurde keine Datei hochgeladen") ; 
}
}

member.php
PHP:
<?php
if($_GET["size"] AND $_GET["name"])

echo richtig("Die Datei ".text($_GET["name"])." wurde erfolgreich in dein Filemanager geladen! <br> Du hast nun ".text($_GET["size"])."MB von 50MB belegt") ; }
... rest von member ...
?>
 
Grundsätzlich macht es keinen Unterschied ob du einen [phpf]header[/phpf] raussendest oder ein [phpf]echo[/phpf]. Für den Server wird der [phpf]header[/phpf] sogar schonender sein, da er keine vollständige Seite ausliefern muss.

Allerdings hindert das den Nutzer noch nicht daran, den "Zurück" Button seines Browsers zu nutzen. Ich würde da mit Sessions arbeiten.

PHP:
<?php
# [...]
if(!$_SESSION['has_uploaded'])
{
# do_upload
$_SESSION['has_uploaded'] = true;
}

Natürlich könnte der Benutzer das Session Cookie löschen und dann noch einmal hochladen/senden, aber es sollte deinen geschilderten Fall verhindern.
 
Vielen Dank für deine Antwort, das scheint mir eine gute Lösung zu sein. Wenn er das Cookie Löschen würde, würde er ja eh ausgeloggt sein und somit auch egal. Mehrfache Uploads sind auch weniger das Problem wenn es mal passiert, aber da der filemanager direkt auf der member profilseite ist könnte es schon vorkommen das versehentlich mal F5 oder zurück gegangen wird.
 
Zurück