PHP-Datei zum Herunterladen generieren und dann umleiten

In PHP kann man die header()-Funktion verwenden, um einen "Content-Disposition"-Header zu senden, um den Benutzer dazu aufzufordern, eine Datei herunterzuladen. Hier ist ein Beispiel:

<?php
$file = 'Pfad/zur/Datei.txt';
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
readfile($file);
exit();
header("Location: index.php");
?>

Im obigen Beispiel sendet das Skript zunächst Header, um den Benutzer dazu aufzufordern, eine Datei mit dem Namen "Datei.txt" im Ordner "Pfad/zur" herunterzuladen. Dann wird die readfile()-Funktion verwendet, um den Inhalt der Datei auszulesen und an den Browser auszugeben. Anschließend wird exit; verwendet, um die Ausführung des Skripts zu beenden und weitere Ausgaben zu verhindern.

Wenn Sie nach dem Herunterladen weiterleiten möchten, können Sie die header("Location:")-Funktion wie in der letzten Zeile des Skripts verwenden, aber denken Sie daran, dass es wichtig ist, die header("Location:") nach dem exit;-Befehl zu platzieren, da nach Beendigung der Skriptausführung keine weiteren Header mehr gesendet werden können.