Hallo Community,
ich bin ziemlicher Anfänger in PHP und frage mich, wie folgendes Verhalten erreicht werden kann:
Der Benutzer füllt ein Formular aus und drückt auf "Submit". PHP generiert dabei eine PDF-Datei (was hier passiert, interessiert nicht weiter), die dem Nutzer zum Download angeboten wird. Im Browser wird dabei dieselbe Seite wieder angezeigt, sodass der Nutzer seine Eingaben ändern und die Datei neu generieren lassen kann.
Im Moment sieht das Formular so aus:
Das Generieren der Datei klappt schon via Druck auf "Generieren", sie liegt dann auf dem Server in einem Unterverzeichnis. Die Frage ist nun, wie man die Datei zum Download anbietet. Ich habe Folgende versucht:
Allerdings meldet der Browser dann Folgendes:
Zudem startet der Download gefühlt zu früh, vielleicht ist die Datei deshalb korrupt. Ist der obige Fünfzeiler nicht auskommentiert, dann schlagen vorangegangene Befehle fehl (echos, die Debug-Infos im <body> auf die Seite schreiben).
Vielleicht wäre es schlauer, einfach einen Download-Link auf die Seite zu setzen? Aber wie handhabt man dann am schlausten den Dateinamen, sodass der Nutzer einen schönen (also nicht zufallsgenerierten) Namen sieht, aber zwei Nutzer sich nicht in die Quere kommen? Und nach dem Runterladen sollte die Datei ja gelöscht werden, damit der Server nicht zugemüllt wird, das geht mit einem statischen Link auch nicht so einfach...
Vielen Dank für alle Tipps!
Photon
ich bin ziemlicher Anfänger in PHP und frage mich, wie folgendes Verhalten erreicht werden kann:
Der Benutzer füllt ein Formular aus und drückt auf "Submit". PHP generiert dabei eine PDF-Datei (was hier passiert, interessiert nicht weiter), die dem Nutzer zum Download angeboten wird. Im Browser wird dabei dieselbe Seite wieder angezeigt, sodass der Nutzer seine Eingaben ändern und die Datei neu generieren lassen kann.
Im Moment sieht das Formular so aus:
PHP:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
...
<input type="submit" name="submit" value="Generieren">
</form>
Das Generieren der Datei klappt schon via Druck auf "Generieren", sie liegt dann auf dem Server in einem Unterverzeichnis. Die Frage ist nun, wie man die Datei zum Download anbietet. Ich habe Folgende versucht:
PHP:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$fp = fopen($pdf_f, 'rb');
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="' . $outp_file . '"' );
header('Content-Length: ' . filesize($pdf_f));
fpassthru($fp);
}
Allerdings meldet der Browser dann Folgendes:
Zudem startet der Download gefühlt zu früh, vielleicht ist die Datei deshalb korrupt. Ist der obige Fünfzeiler nicht auskommentiert, dann schlagen vorangegangene Befehle fehl (echos, die Debug-Infos im <body> auf die Seite schreiben).
Vielleicht wäre es schlauer, einfach einen Download-Link auf die Seite zu setzen? Aber wie handhabt man dann am schlausten den Dateinamen, sodass der Nutzer einen schönen (also nicht zufallsgenerierten) Namen sieht, aber zwei Nutzer sich nicht in die Quere kommen? Und nach dem Runterladen sollte die Datei ja gelöscht werden, damit der Server nicht zugemüllt wird, das geht mit einem statischen Link auch nicht so einfach...
Vielen Dank für alle Tipps!
Photon